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完全新手教程
Feb 08 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
Sublime开发python程序的示例代码
Jan 24 Python
python脚本实现验证码识别
Jun 07 Python
python实现DEM数据的阴影生成的方法
Jul 23 Python
用Python解数独的方法示例
Oct 24 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
python输出数学符号实例
May 11 Python
Python创建简单的神经网络实例讲解
Jan 04 Python
使用sublime text3搭建Python编辑环境的实现
Jan 12 Python
Python socket如何解析HTTP请求内容
Feb 12 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常用函数的使用汇总
2013/06/08 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
node.js实现的装饰者模式示例
2017/09/06 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
python执行等待程序直到第二天零点的方法
2015/04/23 Python
python先序遍历二叉树问题
2017/11/10 Python
pandas数据处理基础之筛选指定行或者指定列的数据
2018/05/03 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
有关Python的22个编程技巧
2018/08/29 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
python Timer 类使用介绍
2020/12/28 Python
HTML5 canvas基本绘图之绘制阴影效果
2016/06/27 HTML / CSS
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
外语专业毕业生自荐信
2014/04/14 职场文书
2014年科协工作总结
2014/12/09 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电