其实PyMySQL官网上已经有Example了,此处只是加一些关于常用配置的注释:
# 别忘了导入~
import pymysql.cursors
'''
连接数据库配置注释:
host:mysql数据库所在的ip地址,localhost和127.0.0.1都指本机
user:连接mysql的用户名
password:连接mysql的密码
db:具体数据库名称
charset:字符集,需要与mysql数据库配置一致
cursorclass:如不配置默认select查询返回的result是tuple元组。建议配置字典dict,方便用key取值
autocommit:每次插入或修改的操作后自动提交数据,不建议配置True,默认False手动提交,避免频繁提交消耗资源。
'''
connection = pymysql.connect(host='localhost',
user='root',
password='root123',
db='iris',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
autocommit=False
)
try:
# 每一个操作都是一次连接,需要如下语句
with connection.cursor() as cursor:
# 新增一行数据
# %s代表占位符,意思是先占个坑,具体填什么值下一行执行的时候填
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
# 执行上一条sql语句,按照顺序填上占位符的值
cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
# 如果没有配置autocommit必须手动调用commit才能正确保存数据
# 只有增删改才需要commit
connection.commit()
with connection.cursor() as cursor:
# 读取一条数据
sql = "select * from `iris` where `petal_length` > %s"
# 如果只有一个占位符也别忘了加逗号,因为只有加逗号才是tuple元组类型
cursor.execute(sql, (5,))
result = cursor.fetchone() # 取一条
# result = cursor.fetchmany(2) # 取多条,括号里可以写条数
# result = cursor.fetchall() # 取所有数据
print(result)
finally:
# 别忘了关闭连接哦!
connection.close()