工作中,经常会有用python访问各种数据库的需求,比如从oracle读点配置文件或者往mysql写点结果信息之类的。这里列一下可能用到的各个模块。
sqlite3: 内置模块用sqlite,有时候确实很方便,我觉得它确实做到了宣称的“零配置”。python自2.5版以来,就内置了对sqlite3的支持,使用也非常简单,按照文档上来:
代码如下:
#打开db文件,获得连接conn = sqlite3.connect(‘数据文件名’)#获得游标c = conn.cursor()#执行sqlc.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的需求的话,可以试试看,我还是尽量不用这种格式了,哈哈。