在python中,我们可以通过MySQLdb
这一适配器连接并操作数据库。
其中有两个主要的对象Connection
和Cursor
,分别用来与数据库连接和通信。
下面给出一个与数据库连接的实例:
Connection对象:
conn = MySQLdb.connect(
host='127.0.0.1', # 主机名 127.0.0.1 为本机IP
port=3306, # 端口
user='root', # 用户名
passwd='***', # 数据库密码
db="test", # 数据库名
charset='utf8' # 字符集
)
conn有几个比较重要的方法:
- commit() 和 rollback()
理解这两个方法我们首先要知道和数据库的整个通信过程是怎样的:
建立连接之后,我们提供要执行的sql语句给数据库,然后数据库将运行的结果返回到本地的缓存区,我们一系列的增删改是在本地的缓存中进行。如果修改完成后,我们便通过commit()方法提交当前的事务(即此次操作)使其在数据库中生效,如果要撤销本次操作,则通过rollback()方法取消当前事务。 - close()用来关闭当前的连接
Cursor对象:
Cursor最重要的方法是execute()
和fetch*()
,其中execute用来执行sql语句,fetch用来查询结果:
fetch*方法其实类似于C语言的的文件操作,有一个指针指向当前的位置,fetchone()得到第一条结果,此时指针便会指向第二条结果,此时fetchall()便得到除了第一条以外的所有结果。
cursor = conn.cursor() # 创建游标
sql = "select * from user"
cursor.execute(sql) # 执行sql语句
print cursor.rowcount # 上一条sql语句处理或影响的行数
rs = cursor.fetchone() # fetchone为查询一条结果
print rs
rs = cursor.fetchmany(3) # fetchmany(n) 为查询n条
print rs
rs = cursor.fetchall() # fetchall 为查询剩余所有
print rs
cursor.close() # 关闭游标和连接
conn.close()
此时灵活运用以上的两个对象,便可以对数据库进行各种操作。
conn = MySQLdb.connect(...)
cursor = conn.cursor()
#插入语句
sql_insert = "insert into user(userid, username) values (10, 'name10')"
# 更新语句
sql_update = "update user set username='name11' where userid=1"
# 删除语句
sql_delete = "delete from user where useid<3"
try:
# 一组操作,同时进行,出错时取消所有操作
cursor.execute(sql_insert)
print cursor.rowcount
cursor.execute(sql_update)
print cursor.rowcount
cursor.execute(sql_delete)
print cursor.rowcount
# 若有异常 输出异常 将事物取消
except Exception as e:
print e
conn.rallback()
# 提交事物, 使变化在数据库中生效
conn.commit()
cursor.close()
conn.close()