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

原创 2016年08月28日 14:24:05

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



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

相关文章推荐

Python解决插入数据库乱码问题

从网站上获取的信息要保存在本地数据库中,但是保存的过程中数据库的信息都变成了乱码,怎么解决呢?客官听我娓娓道来。 首先,保证以下四项的编码都是utf-8: 1. 代码 2. 数据库连接 3. ...

python读写文件,和设置文件的字符编码比如utf-8

一. python打开文件代码如下: f = open("d:\test.txt", "w") 说明: 第一个参数是文件名称,包括路径; 第二个参数是打开的模式mode ‘r’:只读(缺省。如果文件...
  • willhuo
  • willhuo
  • 2015年10月23日 10:40
  • 17402

python读取文件内容存入mysql

python读取文件内容存入mysqlmysql导入支持sql文件和txt文件(csv),但在txt直接导入会出现乱码,所以直接用python读取每一行,然后写入数据库。 最近看兄长生写jsp代码,...

利用Python在一个文件的头部插入数据

利用Python在一个文件的头部插入数据在一个文件的末尾追加数据是很常用的。在使用过程中应该都比较熟悉不会出现什么错误。但是往一个文件头部插入数据可能或多或少会碰到一些问题。看似正确的错误代码很多代码...

python 读取本地txt,存入到mysql

准备工作:成功安装python2.7、pycharm、python的mysql包–mysqldb、mysql 5.6 数据:本地文件,名称 a.txt代码如下:# -*- coding: UTF-8 ...

python乱码浅析-乱码解码及数据库编码配置

在代码中需要打印中文的时候容易出现乱码,下面简单提供几个思路去解决打印乱码的问题。(环境python2.7) 乱码解码方法: (1)使用chardet的detect函数去检测: import time...

Python爬取数据并写入MySQL数据库

首先我们来爬取 http://html-color-codes.info/color-names/ 的一些数据。按 F12 或 ctrl+u 审查元素,结果如下:  结构很清晰简单,我们就是要爬 tr...

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数。 1.   最基本的算法是,从小到大遍历: for (i = 2 to A -1)          if (i * B > A)...

利用K-means聚类算法根据经纬度坐标对中国省市进行聚类

K-means聚类算法是一种非层次聚类算法,在最小误差的基础上将数据划分了特定的类,类间利用距离作为相似度指标,两个向量之间的距离越小,其相似度就越高。程序读取全国省市经纬度坐标,然后根据经纬度坐标进...

Radon变换理论介绍与matlab实现--经验交流

本人最近在研究Radon变换,在查阅了各种资料之后在此写下个人的理解,希望与各位牛牛进行交流共同进步,也使得理解更加深刻些。 Radon变换的本质是将原来的函数做了一个空间转换,即,将原来的XY平...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python读取文件写入数据库中编码问题
举报原因:
原因补充:

(最多只允许输入30个字)