使用Python DB API访问数据库的流程图:
在Centos下安装MySQLdb模板(为了方便演显,我用yum安装,也是最快最省事的安装):
yum install MySQL-python -y
如果安装有ipython,可以看到它有非常多的对象,每个对象这里就介绍ipython的安装:
In [1]: import MySQLdb
In [2]: MySQLdb. MySQLdb.BINARY MySQLdb.NotSupportedError MySQLdb.escape_sequence MySQLdb.Binary MySQLdb.OperationalError MySQLdb.escape_string MySQLdb.Connect MySQLdb.ProgrammingError MySQLdb.get_client_info MySQLdb.Connection MySQLdb.ROWID MySQLdb.paramstyle MySQLdb.DATE MySQLdb.STRING MySQLdb.release MySQLdb.DATETIME MySQLdb.TIME MySQLdb.result MySQLdb.DBAPISet MySQLdb.TIMESTAMP MySQLdb.server_end MySQLdb.DataError MySQLdb.Time MySQLdb.server_init MySQLdb.DatabaseError MySQLdb.TimeFromTicks MySQLdb.string_literal MySQLdb.Date MySQLdb.Timestamp MySQLdb.test_DBAPISet_set_equality MySQLdb.DateFromTicks MySQLdb.TimestampFromTicks MySQLdb.test_DBAPISet_set_equality_membership MySQLdb.Error MySQLdb.Warning MySQLdb.test_DBAPISet_set_inequality MySQLdb.FIELD_TYPE MySQLdb.apilevel MySQLdb.test_DBAPISet_set_inequality_membership MySQLdb.IntegrityError MySQLdb.connect MySQLdb.thread_safe MySQLdb.InterfaceError MySQLdb.connection MySQLdb.threadsafety MySQLdb.InternalError MySQLdb.constants MySQLdb.times MySQLdb.MySQLError MySQLdb.debug MySQLdb.version_info MySQLdb.NULL MySQLdb.escape MySQLdb.NUMBER MySQLdb.escape_dict
我们这里主要说创建数据库的连接对象connection,创建方法MySQLdb.connect(参数)
主要参数如下:
参数名 类型 说明 host 字符串 MySQL服务器地址 port 数字 MySQL服务器端口号 user 字符串 用户名 passwd 字符串 密码 db 字符串 数据库名称 charset 字符串 连接编码
connection对象支持的方法:
方法名 说明 cursor() 使用该连接创建并返回游标 commit() 提交当前事务 rollback() 回滚当前事务 close() 关闭连接
实例讲解:编辑connection.py
#!/usr/bin/env python
执行结果:
[root@Test-server script]#python connection.py <_mysql.connection open to ‘127.0.0.1‘ at 23c1fa0> <MySQLdb.cursors.Cursor object at 0x7f545cbf97d0> [root@Backup-server script]#vim connection.py
可以看到成功连接了MySQL.
下面介绍一下游标对象: 用于执行查询和获取结果
cursor对象支持的方法:
参数名 说明 execute(op[,args]) 执行一个数据查询命令 fetchone() 取的结果集的下一行 fetchmany(size) 获取结果集的下几行 fetchall() 获取结果集中剩下的所有行 rowcount 最近一次execute返回的行数或影响行数 close() 关闭游标对象
execute方法:执行SQL、将结果从数据为获取到客户端:
fetch*()方法:移动rownumber,返回数据。
实例演示:(select查询数据)
创建一张测试:
CREATE TABLE `user` ( `userid` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(100) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`userid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
mysql> select * from user; +--------+----------+ | userid | username | +--------+----------+ | 1 | user1 | | 2 | user2 | | 3 | user3 | | 4 | user4 | | 5 | user5 | | 6 | user6 | | 7 | user7 | | 8 | user8 | | 9 | user9 | +--------+----------+ 9 rows in set (0.00 sec)
编辑cursor.py文件:
#!/usr/bin/env python
运行程序:
[root@Test-server script]#python connection.py 9 返回一条数据 (1L, u‘user1‘) 返回从第二条起的三条数据 ((2L, u‘user2‘), (3L, u‘user3‘), (4L, u‘user4‘)) 返回剩下的行数据 ((5L, u‘user5‘), (6L, u‘user6‘), (7L, u‘user7‘), (8L, u‘user8‘), (9L, u‘user9‘))
我们看到,每次使用fetch方法,都是在上一次fetch方法执行的结果的尾部开始。
如果我们想把表里的数据格式化打印出来,因为从上面的结果我们可以看到返回的是元组的元组,我们通过for方法把它取出:
#!/usr/bin/env python
#获取所有行的数据 rs = cursor.fetchall() for row in rs: print “ userid=%s, username=%s ” % row cursor.close() conn.close()
执行程序:
[root@Test-server script]#python cursor.py userid=1, username=user1 userid=2, username=user2 userid=3, username=user3 userid=4, username=user4 userid=5, username=user5 userid=6, username=user6 userid=7, username=user7 userid=8, username=user8 userid=9, username=user9
对MySQL的insert/delete/update的操作演示:
编辑一个增删改的脚本iud.py
#!/usr/bin/env python
执行程序,结果如下:
root@Test-server script]#python iud.py 1 1 2 userid=3, username=user3 userid=4, username=user4 userid=5, username=user5 userid=6, username=user6 userid=7, username=user7 userid=8, username=user8 userid=9, username=name91 userid=10, username=user10
通过上面的简单例子说明了通过Python的MySQLdb模块去进行MySQL数据库操作,网上有很多例子,我是Python菜鸟,通过参加慕课网的一些简单直接的python课程学习,个人感觉还不错