Python下连接数据库方法

先汇总一下Python和数据库连接的宏观架构:

1. 建立和数据库系统的连接
2. 获取操作游标
3. 执行SQL,创建一个数据库(当然这一步不是必需的,因为我们可以用已经存在的数据库)
4. 选择数据库
5. 进行各种数据库操作
6. 操作完毕后,提交事务(这一步很重要,因为只有提交事务后,数据才能真正写进数据库)
7. 关闭操作游标
8. 关闭数据库连接


连接SQL Server:

1. 使用pyodbc   

【安装方法】:Mac系统:见之前本空间一篇博文。简单来说: 命令行两行命令brew install unixodbc + sudo pip install pyodbc

Windows系统:pip install pyodbc

参考文档:http://mkleehammer.github.io/pyodbc/  https://pypi.python.org/pypi/pyodbc  http://blog.csdn.net/orends/article/details/42639249


【版本适用】:实测支持python 2.7 从下载官网看,也支持python 3.4

【使用方法】:给出两个非常具体的样例和datasheet网站供参考。http://blog.csdn.net/orends/article/details/42639249  http://my.oschina.net/zhengyijie/blog/35587


通过实际测试,我们发现pyodbc的效率更高,在我们的计算机上,时间快接近一半。


2. 使用pymmsql

前言,该包似乎较为官方,历经多带版本的更迭。有详尽的官方说明文档。注意依据具体的版本,查阅官方文档使用说明。

似乎用的不是很广泛。民间文档较少。贴出官方文档:http://pymssql.org/en/latest/

【安装方法】:查阅官方文档。依据版本号给出了详尽说明。重要提示:版本自2.1.1 更新到 2.1.2后及其后续版本FreeTDS需要单独安装,先安装FreeTDS再安装pymmsql。

【版本适用】:兼容python 2.7 && python 3.4等主流版本

【使用方法】:依据官方文档,依据版本,查阅使用说明。


需要注意的是,pymmsql的语法与pyodbc略有差别,需要查阅官方文档,根据样例进行操作连接。


连接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)

#encoding=utf-8
import sys
import MySQLdb

reload(sys)
sys.setdefaultencoding('utf-8')

db=MySQLdb.connect(user='root',charset='utf8')
注:MySQL的配置文件设置也必须配置成utf8



你可能感兴趣的:(python,数据处理)