码迷,mamicode.com
首页 > 数据库 > 详细

Pyhton 操作MySQL数据库

时间:2016-07-07 13:03:10      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

 

   MySQL数据库的接口程序下载地址:https://sourceforge.net/projects/mysql-python/

     操作数据库的大致步骤如下:

1:首先先创建一个数据库的连接对象connection;

2:然后用连接对象创建游标对象;

3:用游标对象操作数据库(比如:增删查改);

4:最后提交事务或回滚事务。

 

     连接对象connection有以下方法:

cursor()        -------------------------------     创建并返回游标

commit()       -------------------------------     提交当前事务

rollback()       -------------------------------     回滚当前事务

close()          --------------------------------    关闭连接

 

     游标对象cursor有以下方法:

execute()      ---------------------------------    执行数据库查询和命令

fetchone()     ---------------------------------    取得结果集的下一行

fetchmany()   ---------------------------------    取得结果集的下几行

fetchall()        ---------------------------------    取得结果集中剩下的所有行

rowcount       ---------------------------------    最近一次execute()返回数据的行数或影响行数

close()           ---------------------------------    关闭游标对象

 

提交事务:当你操作了数据库(增删查改)之后,就一定要提交事务,不然你之前的操作不会有结果。

回滚事务:如果操作数据库出现异常的时候,就可以用回滚事务,使之恢复到没有操作数据库之前。

 

下面用代码来加深理解:

 1 #-*- coding:utf-8 -*-
 2 import  MySQLdb
 3 
 4 con = MySQLdb.Connect(
 5     host = "你的数据库主机地址",
 6     user = "你的数据库用户名",
 7     passwd = "你的数据库密码",
 8     db = "你的数据库名",
 9     port = 3306,
10     charaet = "编码类型"
11 
12 )
13 
14 cur = con.cursor()

上面创建了连接对象,然后用连接对象创建了游标对象,步骤1、2就完成了。接着来操作数据库,这是我数据库一个表(user)的数据:

技术分享

接着代码:

 1 sql = "select * from user"
 2 cur.execute(sql)
 3  
 4 print cur.rowcount
 5 
 6 print cur.fetchone()
 7 
 8 print cur.fetchmany(1)
 9 
10 print cur.fetchall()
11 
12 cur.close()
13 con.close()

 

打印结果如下:

3
(u‘name1‘, u‘1‘)
((u‘name2‘, u‘2‘),)
((u‘name3‘, u‘3‘),)

 

我想代码不言而明,因为里面代码的一些方法在上面已经告知了用处。注意:操作完后要关闭游标对象和连接对象(用close()方法)

 

接着操作,增:

1 sql = inser into user(username, password) values("name4","4")
2 cur.execute(sql)
3 
4 cur.close()
5 con.close()

运行上面代码发现数据库并没有增加记录(自动提交已关闭),这时就要提交事务(用commit()方法),在上面代码的第三行加上这句代码:con.commit()并运行代码发现数据库添加了一条记录。如图:

技术分享

-------------------接下来的改和删就不演示了,改下SQL语句就可以的,接下来看下回滚事务-------------------------------

 1 insert_sql = insert into user(username, password) values("name5", "5")
 2 del_sql = "delete from user where word=‘5‘"
 3 try:
 4 
 5     cur.execute(insert_sql)
 6 
 7     cur.execute(del_sql)
 8 
 9     con.commit()
10 except:
11     con.rollback()
12 
13 cur.close()
14 con.close()

上面代码有两个SQL语句,一个是增加username=name5,password=5,一个是删除word字段等于5的记录,但是我的表中并没有word这个字段。所以增的语句会执行成功,删的语句会执行失败。我把执行这两条语句放到try块里,全部执行成功就提交事务,一旦哪条执行失败就捕获错误并回滚事务。运行了代码后发现,数据库不变。这里虽然增执行成功了,但在删执行失败了,就回滚了事务。所以回滚事务就恢复到了没有操作数据库之前(这里就是没有执行增之前),所以数据库的数据不变。

 

操作数据库并不难,只要你会SQL语句!

Pyhton 操作MySQL数据库

标签:

原文地址:http://www.cnblogs.com/blogCblog/p/5649582.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!