python操作mysql数据库(增,删,改,查)

时间:2022-12-11 20:51:20
#!/usr/bin/env python
#coding:utf-8
import MySQLdb
db=MySQLdb.connect(host='localhost',user='root',passwd='123',db='08day5')
cur=db.cursor(cursorclass=MySQLdb.cursors.DictCursor)#以字典的形式展示
#cur=db.cursor()
#如果数据表已经存在,则使用execute()方法删除
cur.execute('DROP TABLE IF EXISTS EMPLOYEE')
#创建数据表
sql='''CREATE TABLE EMPLOYEE(
id INT PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(20) NOT NULL,
last_name VARCHAR(20),
age INT,
sex CHAR(1),
income FLOAT
)'''
cur.execute(sql)
#插入操作(写法1)
sql='''INSERT INTO EMPLOYEE(first_name,last_name,age,sex,income)
values('xiaoqing','zhang',20,'W',2400)'''
try:
cur.execute(sql)#执行sql语句
db.commit()#提交到数据库执行
except:
db.rollback()#Rollback in case there is any error!
#插入操作(写法2:注意引号的结束位置 以及 续行符的使用)
sql="INSERT INTO EMPLOYEE(first_name,last_name,\
age,sex,income) \
VALUES('%s','%s','%d','%c','%f')" % \
('wuji','zhang',34,'M',3400.8)
try:
cur.execute(sql)#执行sql语句
db.commit()#提交到数据库执行
except:
print 'there is some error!'
db.rollback()#发生错误时,回滚!
#查询操作
sql="SELECT * FROM EMPLOYEE WHERE income > '%d'" % (1000)
try:
cur.execute(sql)
results=cur.fetchall()
print results
except:
print 'there is some error!'
#更新操作
sql="UPDATE EMPLOYEE SET AGE=AGE+1 WHERE SEX='%c'" % ('M')
try:
cur.execute(sql)#执行sql语句
db.commit()#提交到数据库执行
except:
db.rollback()#发生错误时回滚!
#删除记录
sql="DELETE FROM EMPLOYEE WHERE age>'%d'" % (20)
try:
cur.execute(sql)
db.commit()
except:
db.rollback()
cur.close()
db.close()


执行事务
事务机制可以确保数据一致性。
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
Python DB API 2.0 的事务提供了两个方法 commit 或 rollback。
对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。
commit()方法提交游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。


原文链接:点击打开链接