python读取文件写入数据库中编码问题

在把sina数据保存到数据库的过程中又碰到了些新问题。

文本如下:

# coding=utf-8
import MySQLdb  
import codecs

#读取爬取到的文件,按照用户名判断是否在数据库中存在,并返回id
infofile = codecs.open("inforead.txt", 'r', 'utf-8')
infofilenew = codecs.open("infowrite.txt", 'a', 'utf-8')
username = infofile.readline()
conn = MySQLdb.connect (host = "localhost", user = "root", passwd = "123456", db = "school", use_unicode=True, charset="utf8")  
cursor = conn.cursor ()  
# cursor.execute('SET NAMES gbk')
while username!="":
    username = username.split(' ')
    givenname = username[0]
    givenname = givenname.encode("utf8")  
    #判断该用户是否已存在
    cursor.execute ("SELECT id from teacher where name='"+givenname+"'")  
    rows = cursor.fetchall()  
    if len(rows)>0:
        #存在则返回该用户的id
        id = rows[0][0]
    elif len(rows)==0:
        #不存在则插入到数据库
#         print type(givenname)
#         print givenname
#         print type(givenname)
#         print givenname
        print givenname=='流'
        cursor.execute("insert into teacher(name,age,xi) values('"+givenname+"',12,6)")
        conn.commit()  
        cursor.execute ("SELECT id from teacher where name='"+givenname+"'")
        row = cursor.fetchall()
        id = row[0][0]
    print id
    infofilenew.write(str(id)+" "+username[1])
    username = infofile.readline()


cursor.close ()  
conn.close ()  

现在来看,整个文件有多处提到编码问题:

首先在打开文件加载到内存过程中打开方式是utf8,也就是说文件处理是utf8.

其次,在mysql的connection处提到写入数据库的格式为utf8。问题就出在这,因为之前测试过程中试着在写入数据库之前将数据库的一些编码格式改为gbk,才写了这个set。。。但是,这就与utf8产生了冲突。导致我的givenname编码产生冲突,成了gbk,所以我还需要将givenname格式encode为utf8.。。



问题大概都明白了,对于字符编码理解又多了些。

阅读更多
个人分类: database python
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

python读取文件写入数据库中编码问题

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭