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使用正则表达式匹配字符串开头并打印示例
Jan 11 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
python不换行之end=与逗号的意思及用途
Nov 21 Python
使用django-crontab实现定时任务的示例
Feb 26 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
Apr 26 Python
Python实现读取机器硬件信息的方法示例
Jun 09 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
May 16 Python
python3多线程知识点总结
Sep 26 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
python numpy实现rolling滚动案例
Jun 08 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 Python
Python+Appium实现自动化清理微信僵尸好友的方法
Feb 04 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
php微信公众号开发模式详解
2016/11/28 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
JS文字球状放大效果代码分享
2015/08/19 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
2016/02/23 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
2017/03/21 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
微信小程序实现工作时间段选择
2019/02/15 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
windows下安装Python和pip终极图文教程
2017/03/05 Python
python清理子进程机制剖析
2017/11/23 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
python全栈开发语法总结
2020/11/22 Python
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
七年级历史教学反思
2014/02/05 职场文书
党课培训主持词
2014/04/01 职场文书
电视节目策划方案
2014/05/16 职场文书
经典团队口号大全
2014/06/21 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
责任书格式
2015/01/29 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
拙作再改《我的收音机情缘》
2022/04/05 无线电