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.。。



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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值