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创建XML文档
Mar 01 Python
Python类属性与实例属性用法分析
May 09 Python
Python变量和数据类型详解
Feb 15 Python
Python实现对百度云的文件上传(实例讲解)
Oct 21 Python
python版学生管理系统
Jan 10 Python
python 使用 requests 模块发送http请求 的方法
Dec 09 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
Laravel框架表单验证格式化输出的方法
Sep 25 Python
Python如何定义有默认参数的函数
Aug 10 Python
python爬虫工具例举说明
Nov 30 Python
python制作微博图片爬取工具
Jan 16 Python
python实现MD5进行文件去重的示例代码
Jul 09 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
数字转英文
2006/12/06 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
PHP往XML中添加节点的方法
2015/03/12 PHP
PHP缓冲区用法总结
2016/02/14 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
详解php中的implements 使用
2017/06/13 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
javascript生成随机颜色示例代码
2014/05/05 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
C语言中break与continue的区别
2012/07/12 面试题
new修饰符是起什么作用
2015/06/28 面试题
社区七一党员活动方案
2014/01/25 职场文书
中学教师师德承诺书
2014/05/23 职场文书
省级优秀班集体申报材料
2014/05/25 职场文书
社区娱乐活动方案
2014/08/21 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers
十大最帅动漫男主 碓冰拓海上榜,第一是《灌篮高手》男主角
2022/03/18 日漫