I am LAZY bones ? all linux

几个连接数据库用的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的需求的话,可以试试看,我还是尽量不用这种格式了,哈哈。

最后修改时间: 2010年11月28日 12:18

本文章发表于: 2010年11月28日 12:18 | 所属分类:编程相关. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

12 个评论 关于: “几个连接数据库用的python模块”

  1. iCyOMiK 在 2010年11月28日 12:53 说:回复

    呃,颜色太相近很难看清。用Stylish的body{color:#FFF !important}一下~这下好了,回到页面顶再看~

  2. xiooli 在 2010年11月28日 12:56 说:回复

    excel 那个,在 linux 下也能用么?

    • mono 在 2010年11月28日 13:28 说:回复

      @xiooli

      这东西基于OOO放出的excel格式文档,不依赖ms的东西
      还有两个用来读写的xlrd,xlwt也不依赖ms

  3. iCyOMiK 在 2010年11月28日 14:29 说:回复

    嗯,有用吖,谢谢,据说面试一般会问到会不会数据库操作,记下了~

  4. weakish 在 2010年11月28日 15:54 说:回复

    原來還有直接處理xls的東東,長見識了。我原來都是先把xls轉成csv再處理。下次試試這個。

  5. 丕子 在 2010年11月28日 19:11 说:回复

    以前写django时候用过

  6. 百度黑板报 在 2010年11月30日 03:42 说:回复

    sqlite很方便
    msyqldb我一直在用
    再强大点就用sqlalchemy

  7. shan 在 2010年12月06日 11:05 说:回复

    这个太中意了,要“偷”,哈哈。

  8. 山羊 » Blog Archive » bones7456 之 Lin 数据库 在 2010年12月06日 11:11 说:回复

    […] 几个连接数据库用的python模块 […]

  9. weakish 在 2010年12月18日 21:54 说:回复

    pyExcelerator好像2007年以後就沒新版本了。

    只是提取信息的話,可以試試xlrd。

    http://www.lexicon.net/sjmachin/xlrd.htm

  10. sjolzy 在 2010年12月23日 17:32 说:回复

    挺好用的,朕纳了~~

  11. 淘宝数据平台与产品部官方博客 tbdata.org 在 2011年08月15日 15:28 说:回复

    […] 原文:http://luy.li/2010/11/28/python_db/,作者自转。 Next Post Previous Post […]

发表评论