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实现基本进制转换的方法
Jul 11 Python
python使用MySQLdb访问mysql数据库的方法
Aug 03 Python
Python+django实现文件上传
Jan 17 Python
基于hashlib模块--加密(详解)
Jun 21 Python
Python 模拟购物车的实例讲解
Sep 11 Python
python+influxdb+shell编写区域网络状况表
Jul 27 Python
Python使用matplotlib绘制三维图形示例
Aug 25 Python
python3 mmh3安装及使用方法
Oct 09 Python
python3 xpath和requests应用详解
Mar 06 Python
Django全局启用登陆验证login_required的方法
Jun 02 Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 Python
全网最详细的PyCharm+Anaconda的安装过程图解
Jan 25 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
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
Angular2 组件通信的实例代码
2017/06/23 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
javascript实现文件拖拽事件
2018/03/29 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
JS计算斐波拉切代码实例
2019/09/12 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
js实现计算器功能
2020/08/10 Javascript
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
Python 如何批量更新已安装的库
2020/05/26 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
比较node.js和Deno
2021/04/27 Javascript
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫
zabbix配置nginx监控的实现
2022/05/25 Servers
css样式important规则的正确使用方式
2022/06/10 HTML / CSS