python操作MySQL数据库的方法分享


Posted in Python onMay 29, 2012

我采用的是MySQLdb操作的MYSQL数据库。先来一个简单的例子吧:

import MySQLdb try: 
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='test',port=3306) 
cur=conn.cursor() 
cur.execute('select * from user') 
cur.close() 
conn.close() 
except MySQLdb.Error,e: 
print "Mysql Error %d: %s" % (e.args[0], e.args[1])

请注意修改你的数据库,主机名,用户名,密码。

下面来大致演示一下插入数据,批量插入数据,更新数据的例子吧:

import MySQLdb try: 
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306) 
cur=conn.cursor() 
cur.execute('create database if not exists python') 
conn.select_db('python') 
cur.execute('create table test(id int,info varchar(20))') 
value=[1,'hi rollen'] 
cur.execute('insert into test values(%s,%s)',value) 
values=[] 
for i in range(20): 
values.append((i,'hi rollen'+str(i))) 
cur.executemany('insert into test values(%s,%s)',values) 
cur.execute('update test set info="I am rollen" where id=3') 
conn.commit() 
cur.close() 
conn.close() 
except MySQLdb.Error,e: 
print "Mysql Error %d: %s" % (e.args[0], e.args[1])

请注意一定要有conn.commit()这句来提交事务,要不然不能真正的插入数据。

运行之后我的MySQL数据库的结果就不上图了。

import MySQLdb try: 
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306) 
cur=conn.cursor() 
conn.select_db('python') 
count=cur.execute('select * from test') 
print 'there has %s rows record' % count 
result=cur.fetchone() 
print result 
print 'ID: %s info %s' % result 
results=cur.fetchmany(5) 
for r in results: 
print r 
print '=='*10 
cur.scroll(0,mode='absolute') 
results=cur.fetchall() 
for r in results: 
print r[1] 

conn.commit() 
cur.close() 
conn.close() 
except MySQLdb.Error,e: 
print "Mysql Error %d: %s" % (e.args[0], e.args[1])

运行结果就不贴了,太长了。

查询后中文会正确显示,但在数据库中却是乱码的。经过我从网上查找,发现用一个属性有可搞定:

在Python代码

conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python') 中加一个属性:
改为:
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python',charset='utf8')
charset是要跟你数据库的编码一样,如果是数据库是gb2312 ,则写charset='gb2312'。

下面贴一下常用的函数:

然后,这个连接对象也提供了对事务操作的支持,标准的方法
commit() 提交
rollback() 回滚

cursor用来执行命令的方法:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集

cursor用来接收返回值的方法:
fetchall(self):接收全部的返回结果行.
fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone(self):返回一条结果行.
scroll(self, value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条.

参考资料:

MySQLdb‘s user guide

package MySQLdb

Python 相关文章推荐
解析Python中while true的使用
Oct 13 Python
解决Python出现_warn_unsafe_extraction问题的方法
Mar 24 Python
详解Python中的Descriptor描述符类
Jun 14 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
python简单操作excle的方法
Sep 12 Python
python实现大文本文件分割
Jul 22 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
Python sys模块常用方法解析
Feb 20 Python
python numpy库linspace相同间隔采样的实现
Feb 25 Python
Python实现井字棋小游戏
Mar 09 Python
python APScheduler执行定时任务介绍
Apr 19 Python
Django框架模板用法详解
Jun 10 Python
python利用elaphe制作二维条形码实现代码
May 25 #Python
用python实现批量重命名文件的代码
May 25 #Python
删除目录下相同文件的python代码(逐级优化)
May 25 #Python
ssh批量登录并执行命令的python实现代码
May 25 #Python
巧用Python装饰器 免去调用父类构造函数的麻烦
May 18 #Python
Python使用Socket(Https)Post登录百度的实现代码
May 18 #Python
写了个监控nginx进程的Python脚本
May 10 #Python
You might like
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
PHP中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
PHP新手NOTICE错误常见解决方法
2011/12/07 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
php查询ip所在地的方法
2014/12/05 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
Yii 实现数据加密和解密
2021/03/09 PHP
js option删除代码集合
2008/11/12 Javascript
JS 控制CSS样式表
2009/08/20 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
javascript中for/in循环及使用技巧
2015/09/01 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
Node.js插件安装图文教程
2016/05/06 Javascript
jQuery中JSONP的两种实现方式详解
2016/09/26 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
js HTML5 canvas绘制图片的方法
2017/09/08 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
python 输出一个两行字符的变量
2009/02/05 Python
python在不同层级目录import模块的方法
2016/01/31 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
python Django 创建应用过程图示详解
2019/07/29 Python
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS