python操作MySQL数据库(转)
先来一个简单的例子吧:
1
2
3
4
5
6
7
8
9
10
|
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 ]) |
请注意修改你的数据库,主机名,用户名,密码。
下面来大致演示一下插入数据,批量插入数据,更新数据的例子吧:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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数据库的结果就不上图了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
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条.
最新文章
- VS2015 出现 .NETSystem.Runtime.Remoting.RemotingException: TCP 错误
- 个人学习记录1:二维数组保存到cookie后再读取
- A Simple Problem with Integers_树状数组
- ms sql 经典语句【珍藏】
- 《Java程序设计》实验5
- [LeetCode]题解(python):030-Substring with Concatenation of All Words
- Java基础——常用类(Date、File)以及包装类
- iOS - Swift NSNull		空值
- Android selector选择器的使用
- js原型链与继承(初体验)
- 为你的PHP程序选择合适的密码库(初稿)
- 数据结构(脑洞题,BIT):COGS 2394. 比赛
- SCOPE 中 SPFILE、MEMORY、BOTH 的小小区别
- [C#][ASP.net] 透过WebBrowser 取得AJAX 后的网页
- DES/des3 加密程序
- Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】
- redis函数总结
- 谷歌Chrome浏览器之No Sandbox
- python函数与装饰器
- GlideDemo【Glide3.7.0版本的简单使用以及圆角功能】
热门文章
- pytorch-mnist神经网络训练
- <;javaScript>;谈谈JavaScript中的变量、指针和引用
- Qt编写自定义控件15-百分比仪表盘
- Latex新手学习
- .NET开发辅助工具-ANTS Performance Profiler【转载】
- Linux系统管理_主题01 :初识Linux_1.6 用好帮助文档man
- [ES6 系列] 你真的了解ES6吗(一)
- 软件测试第2周个人作业:WordCount编码测试
- Element ui 2.8版本中的table树不能默认全展开解决方法
- android简易跑马灯