安装:
打开anaconda prompt输入:
conda install pymysql
# 选择y/n处:输入y
使用示例:
首先确保已经安装MySQL,并且创建了一个数据库名字为‘db‘,
import pymysql.cursors
# 连接数据库,sql为sql语句,使用cursor.execute()执行
connection = pymysql.connect(host='localhost',
user='user',
password='passwd',
db='db',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
try:
with connection.cursor() as cursor:
# 插入一条新的记录
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
# 数据库不会自动保存所作的更改,需要执行commit语句确保插入成功
connection.commit()
with connection.cursor() as cursor:
# 查询一条记录
sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
cursor.execute(sql, ('webmaster@python.org',))
# 获得查询结果集的下一行(即此条记录)
result = cursor.fetchone()
print(result)
except:
# 回滚
connection.rollback()
finally:
# 关闭连接
connection.close()
数据库对象connection的方法:
- cursor():代表一个数据库光标,用于管理获取操作的上下文。从同一连接创建的光标不是隔离的,即,由光标对数据库所做的任何更改都将立即由其他光标看到。
- commit():因为pymysql时支持事务并且默认不自动提交,执行完sql语句后要执行此方法。
- rollback():使数据库回滚到任何未决事务的开始,即没有commit的事务,关闭连接而不先提交更改将导致执行隐式回滚。
- close():立即关闭连接。
光标对象cursor的方法:
- execute():对所选数据库执行mysql语句 rowcount():这是一个只读属性,并返回受execute()方法影响的行数。
- fetchone():它获取查询结果集的下一行。 结果集是当使用光标对象来查询表时返回的对象。
- fetchall():它获取结果集中的所有行。 如果已经从结果集中提取了一些行,则从结果集中检索剩余的行。