连接MySQL:
1. 使用MySQL
是连接MySQL主流方法,也较为成熟,有较多的文档可以参考。
【安装方法】:似乎比较复杂,前提条件较多。整理的综合参照文档:http://blog.chinaunix.net/uid-24567872-id-3978901.html http://blog.csdn.net/acdreamers/article/details/21186457 http://blog.csdn.net/caianye/article/details/6911079 安装包下载参考地址:似乎两者中一个 https://pypi.python.org/pypi/MySQL-python https://sourceforge.net/projects/mysql-python/
【版本适用】:向上兼容Python 2.4及其以上 处理命令语法一样
【使用方法】:参考 http://blog.csdn.net/lishan9133/article/details/7024989 http://blog.csdn.net/acdreamers/article/details/21186457
上述两篇文文档一起看,非常有收获和帮助
简单总结:
1. 首先建立数据库连接
import MySQLdb
conn=MySQLdb.connect(host="localhost",user="root",passwd="sa",db="mytable")
比较常用的参数包括
host: 连接的数据库服务器主机名,默认为本地主机(localhost)。
user:数据库登陆名.默认是当前用户.
passwd:数据库登陆的秘密.默认为空.
db:要使用的数据库名.没有默认值.
port:MySQL服务使用的TCP端口.默认是3306.
conn连接有两个重要的方法commit【提交新增和修改】,rollback【撤销新增或修改】
2. 执行数据库操作
n=cursor.execute(sql,param)
我们要使用连接对象获得一个cursor(游标)对象,接下来,我们会使用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条。
3. 关闭数据库连接
需要分别的关闭指针对象和连接对象.他们有名字相同的方法
cursor.close()
conn.close()
4. *数据库中有中文数据,防止乱码的方法
1 Python文件设置编码 utf-8 (文件前面加上 #encoding=utf-8)
2 MySQL数据库charset=utf-8
3 Python连接MySQL是加上参数 charset=utf8
4 设置Python的默认编码为 utf-8 (sys.setdefaultencoding(utf-8)
Cursor 对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
arraysize 使用fetchmany方法时,一次取出的结果行数,默认为
1
connection 创建此游标的链接(可选)
description 返回游标活动状态(
7
选项元组):(name,type_code,display_size,internal_size,precision,scale,null_ok)
lastrowid 上次修改的行
ID
(可选:如果不支持行
ID
,则返回
None
)
rowcount 上次execute
*
()方法处理或影响的行数
callproc(func[,args]) 调用储存过程
close() 关闭游标
execute(op[,args]) 执行数据库查询或命令
executemany(op,args) 类似execute()和
map
()的结合,为给定的所有参数准备执行的数据库查询或命令
fetchone() 获取查询结果的下一行
fetchmany([size
=
cursor.arraysize]) 获取查询结果的下面size行
fetchall() 获取查询结果的所有(剩余)行
__iter__() 为游标创建迭代器对象(可选,参考
next
())
messages 游标执行后从数据库中获取的消息列表(元组结合,可选)
next
() 被迭代器用于获取查询结果的下一行(可选,类似fetchone(),参考__iter__())
nextset() 移动到下一个结果集合(如果支持)
rownumber 当前结果集中游标的索引(以行为单位,从
0
开始,可选)
setinputsizes(sizes) 设置允许的最大输入大小(必须有,但是实现是可选的)
setoutputsize(size[,col]) 设置大列获取的最大缓冲区大小(必须有,但是实现是可选的)
|