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

database 同时被 2 个专栏收录
28 篇文章 0 订阅
32 篇文章 0 订阅

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



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

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页

打赏作者

尽拣寒枝不肯栖

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值