python MySQLdb的应用
今天想用python进行数据库的查询,由于我是做php的,本地装的是mysql数据库,于是我就采用mysql来进行是测试。Python的mysql模块的通过pip命令:
pip install MySQL-python
我本地通过这个命令,报了一堆的错误,大概是缺少什么环境。算了,还是寻找exe文件直接安装吧,我本地安装的是32位的python。我找的文件是这个MySQL-python-1.2.3.win32-py2.7.exe,直接安装下一步就行了。那么现在安装好了,进行查询
试试吧
1 # -*- coding: utf-8 -*- 2 #mysqldb 3 import MySQLdb 4 5 #连接 6 conn = MySQLdb.connect(host="localhost",user="root",passwd="root",db="yiguan",charset="utf8") 7 cursor = conn.cursor() 8 9 fo = open('test.log', 'wb') 10 try: 11 #查询 12 cursor.execute("select * from yg_answer") 13 # 获取所有记录列表 14 results = cursor.fetchall() 15 print results 16 except: 17 print "Error: unable to fecth data" 18 19 #关闭 20 conn.close()
查询出的结果如下:
那么我们怎么把这个文件记录下来呢。最近简单的,通过写文件来记录吧。于是通过如下的代码写入:
1 # -*- coding: utf-8 -*- 2 #mysqldb 3 import MySQLdb 4 5 #连接 6 conn = MySQLdb.connect(host="localhost",user="root",passwd="root",db="yiguan",charset="utf8") 7 cursor = conn.cursor() 8 9 fo = open('test.log', 'wb') 10 try: 11 #查询 12 cursor.execute("select * from yg_answer") 13 # 获取所有记录列表 14 results = cursor.fetchall() 15 #print results 16 for row in results: 17 fo.write( row[3] + ':' + row[4] + '\n' ) 18 fo.close() 19 except: 20 print "Error: unable to fecth data" 21 22 #关闭 23 conn.close()
很遗憾,这样并不能写入文件中,会抛出错误Error: unable to fecth data,并不是这里错了,而是第17行写入的时候出错了。于是我在网上寻找啊,最终终于找到了解决的办法。
1 # -*- coding: utf-8 -*- 2 #mysqldb 3 import MySQLdb 4 import sys 5 6 reload(sys) 7 sys.setdefaultencoding( "utf-8" ) 8 9 #连接 10 conn = MySQLdb.connect(host="localhost",user="root",passwd="root",db="yiguan",charset="utf8") 11 cursor = conn.cursor() 12 13 fo = open('test.log', 'wb') 14 try: 15 #查询 16 cursor.execute("select * from yg_answer") 17 # 获取所有记录列表 18 results = cursor.fetchall() 19 #print results 20 for row in results: 21 fo.write( row[3] + ':' + row[4] + '\n' ) 22 fo.close() 23 except: 24 print "Error: unable to fecth data" 25 26 #关闭 27 conn.close()
导入sys模块,设置默认的编码,这样就能解决问题了。具体的为什么可以解决这个问题,你可以通过百度 sys.setdefaultencoding 了解详细的信息
声明:本文内容仅是本人学习的记录,不保证在项目中可用,若引用此代码导致了严重后果,本人不承担任何法律责任。