由于mysql体积小,速度快,成本低,源码开放,所以一些中小型系统开发都采用mysql
我们连接mysql采用的工具包是
pymysql
1.安装pymysql
pip install pymysql
2.pymysql工作图
python操作数据库主要涉及connection和cursor这两个对象
connection对象
connection对象是与数据源的唯一对话,可以使用connection对象的集合,方法,属性实现与数据的连接
connection的参数列表
参数名 | 类型 | 说明 |
---|---|---|
host | 字符串 | 连接的数据库的服务器ip,如果是本地的话,写localhost即可 |
port | 数字 | mysql服务程序的端口号,默认为3306 |
user | 字符串 | 连接数据库的用户名(一般用root) |
passwd | 字符串 | 连接数据库的密码 |
db | 字符串 | 连接的数据库名称 |
charset | 字符串 | 连接编码,一般使用“utf8” |
使用上面参数的案例
import pymysql #创建connection对象为db db = pymysql.connect(host="服务器ip",port=3306,user="root",passwd="han123..",db="testdb",charset='utf8')
connection对象常用的方法
方法名 | 说明 |
---|---|
cursor() | 使用该连接创建并返回游标 |
commit() | 提交当前事务 |
rollback() | 回滚当前事务 |
close() | 关闭连接 |
上面方法基本使用
#由于我们已经创建connection对象为db,所以这里以db代替connection对象 #创建cursor游标,获取python版本信息 cursor = db.cursor() #关闭连接 db.close() #提交当前事务 db.commit() #回滚当前事务 db.rollback()
cursor对象
我们已经创建cursor对象,为cursor,下面会将游标对象的常用方法
cursor对象是游标对象,用户用它来查询和获取结果,常用方法如下
常用方法
方法名 | 说明 |
---|---|
execute() | 传入一个sql语句,并执行,传入的类型是字符串 |
fetchone() | 取结果集的下一行 |
fetchmany(size) | 取结果集的下size行 |
fetchall() | 取结果集中剩下的所有行 |
rowcount() | 最近一次执行execute返回数据的行数或者影响行数 |
close() | 关闭游标对象 |
3.基本案例
1.获取mysql版本
import pymysql
#创建connection对象为db
db = pymysql.connect(host="服务器ip",port=3306,user="root",passwd="han123..",db="testdb",charset='utf8')
#创建cursor游标,获取python版本信息
cursor = db.cursor()
#获取mysql版本信息
cursor.execute("select version()")
#将上面的版本结果存放到data中
data = cursor.fetchone()
print(f"版本信息为{data}")
#关闭数据库连接
db.close()
2.创建表
import pymysql
#创建connection对象为db
db = pymysql.connect(host="服务器ip",port=3306,user="root",passwd="han123..",db="testdb",charset='utf8')
#创建cursor游标
cursor = db.cursor()
#创建构建表的sql语句
sql = """
创建表的sql语句"""
#执行sql语句
cursor.execute(sql)
#关闭数据库连接
db.close()
3.新增数据
其实就是在表中添加数据了
import pymysql
#创建connection对象为db
db = pymysql.connect(host="服务器ip",port=3306,user="root",passwd="han123..",db="testdb",charset='utf8')
#创建cursor游标
cursor = db.cursor()
#创建构建表的插入sql语句
sql = """
创建表的插入sql语句"""
try:
#执行sql语句
cursor.execute(sql)
#提交到数据库执行
db.commit()
except:
#发生错误回滚
db.rollback()
#关闭数据库连接
db.close()
4.查询数据
import pymysql
#创建connection对象为db
db = pymysql.connect(host="服务器ip",port=3310,user="root",passwd="han123..",db="testdb",charset='utf8')
#创建cursor游标
cursor = db.cursor()
#创建构建表的sql查询语句
sql = """
创建表的sql查询语句"""
try:
#执行sql语句
cursor.execute(sql)
#获取所有记录的列表
results = = cursor.fetchall()
#mysql在for循环时,先第一行,在第二行
for row in results:
fname = row[0]#获取某行的第一列数据
lname = row[1] #获取某行的第二列数据
#打印结果
print(fname,lname)
except:
#报错
print("Error:unable to fetch data")
#关闭数据库连接
db.close()
5.删除数据
import pymysql
#创建connection对象为db
db = pymysql.connect(host="服务器ip",port=3310,user="root",passwd="han123..",db="testdb",charset='utf8')
#创建cursor游标
cursor = db.cursor()
#创建构建表的sql删除语句
sql = """
创建表的sql删除语句"""
try:
#执行sql语句
cursor.execute(sql)
#提交修改
db.commit()
except:
#发生错误回滚
db.rollback()
#关闭数据库连接
db.close()
6.数据库的更新
import pymysql
#创建connection对象为db
db = pymysql.connect(host="服务器ip",port=3310,user="root",passwd="han123..",db="testdb",charset='utf8')
#创建cursor游标
cursor = db.cursor()
#创建构建sql更新语句
sql = """
创建sql更新语句"""
try:
#执行sql语句
cursor.execute(sql)
#提交修改
db.commit()
except:
#发生错误回滚
db.rollback()
#关闭数据库连接
db.close()
7.执行事务
事务是一组操作流程,在数据库维护中的目的是保持数据的一致性,它有原子性,一致性,隔离性和持久性四大特性,
在python数据库编程中,当游标建立就自动创建了一个隐形的数据库事务,游标的每一个方法都开始了一个新的事物
commit()和rollback()方法都开启了事务,commit()方法更新所有操作,rollback()方法回滚当前游标的所有操作
8.总结
标签:python,创建,mysql,db,pymysql,cursor,connection,sql,连接 From: https://www.cnblogs.com/gqboke/p/17083743.html只要是对表进行修改的,如增加数据,更新库,删除数据等,都要用commit()和rollback()方法
如果只是查询数据,则不用commit()和rollback()方法