python 3.X 连接mysql(补充)

连接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])         设置大列获取的最大缓冲区大小(必须有,但是实现是可选的)

猜你喜欢

转载自blog.csdn.net/register_2/article/details/79989126