python操作MySQL数据库具体方法


Posted in Python onOctober 28, 2013
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 MySQLdbtry:
    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 MySQLdbtry:
    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条.

Python 相关文章推荐
Python利用Beautiful Soup模块修改内容方法示例
Mar 27 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
pandas 透视表中文字段排序方法
Nov 16 Python
Python3.6.2调用ffmpeg的方法
Jan 10 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
python如何使用代码运行助手
Jul 03 Python
jupyter notebook快速入门及使用详解
Nov 13 Python
python 实现弹球游戏的示例代码
Nov 17 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
python实现web邮箱扫描的示例(附源码)
Mar 30 Python
PyTorch device与cuda.device用法
Apr 03 Python
Python使用永中文档转换服务
May 06 Python
Python sys.path详细介绍
Oct 17 #Python
python开发的小球完全弹性碰撞游戏代码
Oct 15 #Python
python中 ? : 三元表达式的使用介绍
Oct 09 #Python
Python 文件和输入输出小结
Oct 09 #Python
Python 错误和异常小结
Oct 09 #Python
Python 命令行非阻塞输入的小例子
Sep 27 #Python
用Python脚本生成Android SALT扰码的方法
Sep 18 #Python
You might like
php+mysql分页代码详解
2008/03/27 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
Ext对基本类型的扩展 ext,extjs,format
2010/12/25 Javascript
jQuery 操作option的实现代码
2011/03/03 Javascript
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
jQuery validate插件实现ajax验证重复的2种方法
2016/01/22 Javascript
javascript正则表达式总结
2016/02/29 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
nodejs的HTML分析利器node-jquery用法浅析
2016/11/08 NodeJs
JavaScript自定义分页样式
2017/01/17 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
解决Python传递中文参数的问题
2015/08/04 Python
python查看微信好友是否删除自己
2016/12/19 Python
利用python实现命令行有道词典的方法示例
2017/01/31 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
自我评价是什么
2014/01/04 职场文书
教师师德承诺书
2014/03/26 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
详解Python 3.10 中的新功能和变化
2021/04/28 Python
详解Vue的sync修饰符
2021/05/15 Vue.js
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle