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 了解详细的信息

posted @ 2016-11-09 17:41  NickBai  阅读(233)  评论(0编辑  收藏  举报