'''
事务具有4个属性:
原子性:一个事务是一个不可分割的找工作单位
一致性:事务必须是数据库从一个一致性状态变到另一个一致性状态
隔离性:一个事务的执行不能被其他事务干扰
持久性:一个事务的提交对数据的改变是持久性的
'''
import pymysql
#数据库配置
config = {
"host": "127.0.0.1",
"port": 3306,
"user": "root",
"passwd": "root",
"db": "zz",
"charset": "utf8",
"cursorclass": "pymysql.cursors.DictCursor" #设置查找出的数据以字典形式返回
}
#创建数据库连接
#conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="root",db="zz",charset="utf8")
conn = pymysql.connect(**config)
#创建游标
cursor = conn.cursor()
#使用execute()方法执行
sql_select = "select * from test_table where id =10"
#插入数据
sql_insert = "insert into test_table(id,name,content) values (3,'jike03','jike03 test')"
#插入多条数据
args=[]
sql_insert_many = "insert into test_table(id,name,content) values (%s,%s,%s)"
for i in range(10,20):
v = (i,'jike'+ str(i),'jike' + str(i) + 'test')
args.append(v)
#cursor.executemany(sql_insert_many, args)
#conn.commit()
#更新数据
sql_update = "update test_table set name='majike' where id = 3"
#删除数据
sql_del = "delete from test_table where id = 3"
try:
cursor.execute(sql_select)
#插入/更新/删除数据的时候需要commit一下,否则数据不会更新
conn.commit()
except:
# 如果发生错误则回滚
conn.rollback()
#接受全部返回行
tup_datas = cursor.fetchall()
for temp in tup_datas:
print(temp)
#关闭游标
cursor.close()
#关闭连接
conn.close()