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编程中@property装饰器的用法
Jun 20 Python
python 实现上传图片并预览的3种方法(推荐)
Jul 14 Python
python中装饰器级连的使用方法示例
Sep 29 Python
Python实现的基数排序算法原理与用法实例分析
Nov 23 Python
python遍历文件夹下所有excel文件
Jan 03 Python
Python中return self的用法详解
Jul 27 Python
对python中UDP,socket的使用详解
Aug 22 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
用Python绘制漫步图实例讲解
Feb 26 Python
解决ROC曲线画出来只有一个点的问题
Feb 28 Python
python可迭代对象去重实例
May 15 Python
opencv实现图像几何变换
Mar 24 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 一个页面执行时间类代码
2010/03/05 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
JS实现拖动示例代码
2013/11/01 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
js模糊查询实例分享
2016/12/26 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
react build 后打包发布总结
2018/08/24 Javascript
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
Vuex实现简单购物车
2021/01/10 Vue.js
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
python实现邮件自动发送
2019/08/10 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物