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()           ---------------------------------    关闭游标对象

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

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

下面用代码来加深理解:

 #-*- coding:utf-8 -*-
 import  MySQLdb

 con = MySQLdb.Connect(
     host = "你的数据库主机地址",
     user = "你的数据库用户名",
     passwd = "你的数据库密码",
     db = "你的数据库名",
     port = 3306,
     charset = "编码类型"

 )

 cur = con.cursor()

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

接着代码:

 sql = "select * from user"
 cur.execute(sql)

 print cur.rowcount

 print cur.fetchone()

 print cur.fetchmany(1)

 print cur.fetchall()

 cur.close()
 con.close()

打印结果如下:

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

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

接着操作,增:

 sql = 'inser into user(username, password) values("name4","4")'
 cur.execute(sql)

 cur.close()
 con.close()

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

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

 insert_sql = 'insert into user(username, password) values("name5", "5")'
 del_sql = "delete from user where word='5'"
 try:

     cur.execute(insert_sql)

     cur.execute(del_sql)

     con.commit()
 except:
     con.rollback()

 cur.close()
 con.close()

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

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

Pyhton 操作MySQL数据库的更多相关文章

  1. PHP操作MySQL数据库5个步骤

    PHP操作MySQL数据库一般可分为5个步骤:1.连接MySQL数据库服务器:2.选择数据库:3.执行SQL语句:4.关闭结果集:5断开与MySQL数据库服务器连接. 1.用mysql_connect ...

  2. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  3. 转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...

  4. PHP操作mysql数据库:[2]查询数据听语音

    本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料   Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言   ...

  5. Code First操作Mysql数据库

    前面博客也讲了,自己做一个网站,选用的是MVC+EF Code First+MySql+EasyUI,先说下技术选型.一.为什么选择MVC? 因为之前自己做的系统大部分是webForm,MVC的之前也 ...

  6. JDBC操作MySQL数据库案例

    JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...

  7. shell脚本操作mysql数据库

    shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改.查)等各种操作 mysql  -hhostname -Pport -uusername -pp ...

  8. Java使用Jdbc操作MySql数据库(一)

    这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...

  9. 使用node js 操作 Mysql 数据库

    使用node js 操作 Mysql 数据库 http://www.nodejs.org/ //node js 数据库操作 MySQL //使用https://github.com/felixge/n ...

随机推荐

  1. 【转】android去掉EditView的默认焦点问题

    原文网址:http://www.111cn.net/sj/android/54680.htm 做一个输入框时发现android中EditView的默认焦点了,这种问题如果是在输入框还好,但在搜索页面或 ...

  2. 反编译工具 使用.NET JustDecompile来反编译你的程序代码

    原文地址:http://www.it165.net/pro/html/201310/7383.html 前言 在项目的进行中有时会碰到需要去了解由第三方所开发的程序代码或者因为年久已经遗失原始码的程序 ...

  3. Mysql 的字符编码机制、中文乱码问题及解决方案【转载】

    本文转载自:http://hi.baidu.com/huabinyin/item/7f51e462df565c97c4d24929.感谢作者及相关博主.        相信很多朋友都会对字符编码敬而远 ...

  4. 《算法问题实战策略》-chaper14-整数论

    Lucas定理: 在组合计数问题中,我们常面临组合数C(n,m)过大而无法直接计算的困境,那么这里的Lucas定理给出了一个较大组合数进行取余运算的一种递归算法. 什么是Lucas定理? Lucas定 ...

  5. 安全控件开发原理分析 支付宝安全控件开发 C++

    浏览器安全控件是如果支付宝一样结合web程序密码数据安全处理的程序,采用C++语言开发 通常的安全控件分为两种,一种是指支持IE内核的浏览器,一种支持所有内核的浏览器,支付宝采用的是支持所有内核的浏览 ...

  6. JQuery Mobile页面的载入方式

    1.JQM页面结构 jQuery Mobile是通过data-role属性来区分渲染界面样式的,JQM里面提供的data-role如下表: 参数 说明 page 页面容器,其内部的mobile元素将会 ...

  7. NSString copy or not (strong)?

       前些日子笔者一直在维护公司的一些旧项目,项目里面的NSString属性几乎全部用的strong,而我在给项目增加一些新的功能的,又都用的copy,因为在我的脑子里几乎已经把NSString大部分 ...

  8. node.js环境配置(angularjs高级程序设计中出现的错误)

    一:npm install connect会出现错误:解决方法 1:$ npm install connect@2.X.X 2:$ npm install serve-static: 建立server ...

  9. CHANGE NOTEPAD DEFAULT CODE TO UTF-8

    Windows记事本新建文本文档编码默认为ANSI 修改步骤: 新建一个文本文档,不输入任何内容,然后"另存为",将编码由默认的ANSI修改为UTF-8,并将新文档命名为templ ...

  10. mysql数据库sql常用命令

    1.查看索引:mysql> show index from tblname; 2.利用索引查询:SELECT * FROM product WHERE ID > =(select id f ...