版权声明:拿的时候你得告诉我一声~ https://blog.csdn.net/xiaohuoche175/article/details/83387640
这次咱们真的开始在pycharm里进行mysql数据库操作了,
首先还是新建一个数据库,
然后新建属性字段
接下来开始创建python与mysql的连接
import pymysql
#连接数据库
conn = pymysql.connect(
#IP和端口
host = "127.0.0.1", port=3306,
#账号和密码
user = "root", password="123456",
#数据库和编码
database = "test", charset="utf8"
)
#获得数据库游标
cursor = conn.cursor()
#执行插入,返回受影响的行数
affected = cursor.execute("insert into student(name,gender) values ('%s','%d')" % ('TOM', 18))
print("插入结束,%d条记录受影响" % (affected))
#执行查询,返回受影响的行数
affected = cursor.execute("select * from student")
print("查询到%d条记录" % (affected))
#查询的结果被保存在游标中,拿取全部结果
ret = cursor.fetchall()
print(type(ret),ret) #类型是二维元组
#提交当前事务到数据库,不提交等于啥也没干
conn.commit()
print("修改已提交")
#断开数据库连接
conn.close()
查看打印结果
@交互过程
pymysql与MySQL的交互过程可以概括为:
- 配置和连接数据库;
- 获取数据查询游标,以执行SQL语句;
- 执行SQL语句,返回受影响的记录数;
- 如果是查询,从游标中读取得到的结果;
- 提交本次访问的结果;
- 关闭数据库;
@数据库事务(回滚机制)
当我们对数据库进行批量操作时,这一系列操作往往是一个有机整体;
因此这一系列操作,应该要么全部成功,要么全部回滚到访问前的状态,否则就容易形成脏数据;
举个例子,一次网购交易的成功提交,要修改商家出货表、用户订单表、转账信息表、物流信息表等等,所有环节都必须严丝合缝,发生任何异常交易都不应成功,一切数据应回滚到交易发生前的状态;
这种要么全部成功、要么全部失败且数据回滚的批量数据操作,就称为一次事务(Transaction);
一次事务(批量数据操作)的结果只有两种:①全部成功并提交,②发生异常并回滚;
import pymysql
#连接数据库
conn = pymysql.connect(
#IP和端口
host = "127.0.0.1", port=3306,
#账号和密码
user = "root", password="123456",
#数据库和编码
database = "test", charset="utf8"
)
try:
#获得数据库游标
cursor = conn.cursor()
#执行插入,返回受影响的行数
affected = cursor.execute("insert into student(name,gender) VALUES ('%s','%d') " % ('tom','18'))
print("插入结束,%d条记录受影响" % (affected))
#执行查询,返回受影响的行数
affected = cursor.execute("select * from student")
print("查询到%d条记录" % (affected))
#查询的结果被保存在游标中,拿取全部结果
ret = cursor.fetchall()
print(type(ret),ret) #类型是二维元组
#提交当前事务到数据库,不提交等于啥也没干
conn.commit()
print("修改已提交")
#异常操作,回滚机制
except Exception as e:
#发生异常是回滚到整个事务开始之前的状态
conn.rollback()
print(e,'数据已经回滚')
#断开数据库连接
conn.close()
这里gender是整数类型,传递了一个字符串,我们查看一下运行结果