Pymysql的基本使用


连接

import pymysql

connection = pymysql.connect(
	host='localhost',
	user='root',
	password='pass_word',
	db='db_name',
	charset='utf8',
	cursorclass=pymsql.cursors.DictCursor
)
  • connection 对象常用方法
方法 说明
cursor() 获取游标对象
commit() 提交事务
rollback() 回滚事务
close() 关闭数据库连接

获取游标

import pymysql
connection = pymysql.connect(...)

cursor = connection.cursor()
  • cursor 常用方法
方法 说明
excute(operation[, parameters]) 执行单条指令
excutemany(operation, seq_of_params) 批量执行指令(批量更新…)
fetchone() 获取查询结果的下一条结果
fetchmany(size) 获取指定数量的结果
fetchall() 获取所有查询结果
close() 关闭当前游标

执行指令并提交

  • cursor.excute()
  • cursor.excutemany()
  • connection.commit()

通过执行不同的 MySQL 指令实现

更详细的SQL指令,参考之前的这篇文章【点击查看】


import pymysql

connection = pymysql.connect('localhost', 'root', 
	'pass_word', 'my_db', charset='utf8')
# 获取游标
cursor = connection.cursor()
# ----------------------指令--------------------------------------
# 创建表 sql 指令
create_table_sql = '''create table mytable
    id int(20) not null primary key,
    name varchar(20) unicode not null,
    gender varchar(8) unicode not null,
    )engine=InnoDB default charset=utf8mb4;
    '''
# 插入一条数据指令
insert_one_sql = 'insert into mytable(id, name, gender) values(10010, "Bender", "Male")'
# 插入多条数据指令,注意占位符 %s
insert_many_sql = "insert into mytable values(%s, %s, %s)"
# 相应数据
datas = [[10011, "Leela", "Famale"],
		[10012, 'Fry', 'Male']]
# ...
# 其他指令参考之前文章[上文链接]
# https://blog.csdn.net/qq_45020818/article/details/121213264
# -----------------------------------------------------------------------
# 执行创建 表 指令
cursor.excute(create_table_sql)
# 执行插入单条数据指令
cursor.excute(insert_one_sql)
# 执行插入多条数据指令
cursor.excutemany(insert_many_sql, datas)
# 提交
connection.commit()
# ...

回滚

  • 发生错误时,回滚
    import pymysql
    try:
    	connection = pymysql.connect(...)
    	cursor = conection.cursor()
    	cursor.excute('insert into mytable values(***,***,***)'
    	connection.commit()
    except:
    	# 发生错误时回滚
    	connection.rollback()
    
    connection.close()

查询

  • fetchone()
  • fetchmany()
  • fetchall()
  • 配合 select ** from _table[where **] 语句使用

import pymysql

connection = pymysql.connect(...)	# 连接
cursor = connection.cursor()	# 获取游标
# 查询 sql语句
select_sql = 'select id,name,gender from mytable where id>10010'
# 执行查询指令
cursor.excute(select_sql)
# 获取所有查询结果
datas = cursor.fetchall()
# 遍历查询结果
for data in datas:
	print(f'id: {data["id"]}\t'  
		 f'name: {data["name"]}\t'
		 f'gender: {data["gender"]}')
# 关闭数据库连接
connection.close()

关闭

  • connection.close()

文章作者: pxoxq
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 pxoxq !
  目录