您的位置:首页 > 编程语言 > Python开发

Python下连接数据库方法

2016-08-02 10:12 183 查看
先汇总一下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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息