几个连接数据库用的python模块
工作中,经常会有用python访问各种数据库的需求,比如从oracle读点配置文件或者往mysql写点结果信息之类的。
这里列一下可能用到的各个模块。
sqlite3: 内置模块
用sqlite,有时候确实很方便,我觉得它确实做到了宣称的“零配置”。python自2.5版以来,就内置了对sqlite3的支持,使用也非常简单,按照文档上来:
#打开db文件,获得连接 conn = sqlite3.connect('数据文件名') #获得游标 c = conn.cursor() #执行SQL c.execute('''SQL 片段''') #如果有对数据的修改操作,那就需要commit一下 conn.commit() #关闭游标 c.close() #关闭连接 conn.close() |
另外,关于sqlite在C和bash下的用法,可以参考为以前的文章。
oracle: cx_Oracle
其实,前面先介绍sqlite3,除了它确实是个小数据库以外,还有一个原因:其他数据库在python下的操作,其实基本上和sqlite3的操作是一样的,也就是说,python其实已经几乎统一了数据库的接口。
打开cx_Oracle的文档页面,你会发现其风格也和python文档很像,因为他们都是用 Sphinx 做的。模块的使用方法就更像了,把上面的代码里,获得连接的那行,换成这样:
conn = cx_Oracle.connect('username/password@TNSname') |
就可以了。只要把用户名、密码、TNS组成一个字符串,传进去,就可以得到一个oracle的连接了。
mysql: MySQLdb
和前两个非常类似,连接的时候用以下两个语法之一:
conn = MySQLdb.connect('host', 'username', 'password', 'database') conn = MySQLdb.connect(host="host", user="username", passwd="password", db="database") |
接下来,也把它当成sqlite用就好了。
excel: pyExcelerator
好吧,我承认excel不算数据库,只是写在这里充数而已,哈哈。因为偶尔还是要取下别人发来的excel里的数据的。
其实,用pyExcelerator来读取文件也是很简单的:
sheets=pyExcelerator.parse_xls('xxx.xls') |
这样出来以后,sheets就是整个工作薄了,它是工作表组成的list,而一个工作表对应于一个tuple,格式是: ('工作表名', 内容)
,而内容又是一个dict,key是一个(行数, 列数)
的tuple,value才是正在的对应格子的内容。看起来确实比较绕,好在处理excel的应用也不多,将就吧。
另外,其实pyExcelerator还支持写入数据到excel的,如果有把查询结果保存成excel的需求的话,可以试试看,我还是尽量不用这种格式了,哈哈。
iCyOMiK 在 2010年11月28日 12:53 说:【 】
呃,颜色太相近很难看清。用Stylish的body{color:#FFF !important}一下~这下好了,回到页面顶再看~
xiooli 在 2010年11月28日 12:56 说:【 】
excel 那个,在 linux 下也能用么?
mono 在 2010年11月28日 13:28 说:【 】
@xiooli
能
这东西基于OOO放出的excel格式文档,不依赖ms的东西
还有两个用来读写的xlrd,xlwt也不依赖ms
iCyOMiK 在 2010年11月28日 14:29 说:【 】
嗯,有用吖,谢谢,据说面试一般会问到会不会数据库操作,记下了~
weakish 在 2010年11月28日 15:54 说:【 】
原來還有直接處理xls的東東,長見識了。我原來都是先把xls轉成csv再處理。下次試試這個。
丕子 在 2010年11月28日 19:11 说:【 】
以前写django时候用过
百度黑板报 在 2010年11月30日 03:42 说:【 】
sqlite很方便
msyqldb我一直在用
再强大点就用sqlalchemy
shan 在 2010年12月06日 11:05 说:【 】
这个太中意了,要“偷”,哈哈。
山羊 » Blog Archive » bones7456 之 Lin 数据库 在 2010年12月06日 11:11 说:【 】
[…] 几个连接数据库用的python模块 […]
weakish 在 2010年12月18日 21:54 说:【 】
pyExcelerator好像2007年以後就沒新版本了。
只是提取信息的話,可以試試xlrd。
http://www.lexicon.net/sjmachin/xlrd.htm
sjolzy 在 2010年12月23日 17:32 说:【 】
挺好用的,朕纳了~~
淘宝数据平台与产品部官方博客 tbdata.org 在 2011年08月15日 15:28 说:【 】
[…] 原文:https://luy.li/2010/11/28/python_db/,作者自转。 Next Post Previous Post […]