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读取文本数据写入到数据库及查询优化

文本数据格式650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/78/3A/wKiom1Z4LlnTJ2BsAABumSdrKSw965...
  • jethai
  • jethai
  • 2016年08月28日 14:08
  • 1368

python读取文本数据写入到数据库及查询优化

文本数据格式650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/78/3A/wKiom1Z4LlnTJ2BsAABumSdrKSw965...
  • jethai
  • jethai
  • 2016年08月28日 14:08
  • 1368

Python网页爬虫之中文乱码

Python爬取中文网页乱码解决方法
  • sinat_34260423
  • sinat_34260423
  • 2017年02月06日 21:50
  • 4267

解决python连接mysql,UTF-8乱码问题

在测试“Bluemix云端数据库服务ClearDB MySQL使用示例———Python开发投票程序”的程序时,从MySQL中读取的中文输出到网页显示都是问号,如下图:解决方法:产生乱码问题,通常都是...
  • testcs_dn
  • testcs_dn
  • 2016年06月02日 06:49
  • 7488

PHP读取EXCEL文件写入数据库

PHP读取ECEL文件写入数据库功能的实现使用到了PHPExcel类库。    $uploadfile="../upload_files/".basename($_FILES['userfile']...
  • amino77
  • amino77
  • 2013年07月22日 09:14
  • 1592

python-从文件读取json数据写到数据库

#!/bin/env python #coding=utf-8 import sys import urllib2 import json import datetime import pymysq...
  • Linzhongyilisha
  • Linzhongyilisha
  • 2017年06月01日 20:13
  • 873

python向数据库插入中文乱码问题

碰到编码问题就头疼啊!。。。。 在想数据库中插入中文时候,会出现如下错误提示:Warning: Incorrect string value: '\xE5\x8C\x97\xE4\xBA\xAC.....
  • junli_chen
  • junli_chen
  • 2015年11月17日 20:28
  • 2338

Python_爬虫_中文乱码

Python爬虫中文乱码,decode('gbk', 'ignore')
  • Dream_Hongyu
  • Dream_Hongyu
  • 2016年01月07日 19:00
  • 4817

用Python把EXCEL中的数据写入到MySQL中

EXCEL 和 MySQL 大体上来说都可以算是"数据库",MySQL貌似有EXCEL的接口,但是最近在自学Python,用Python实现了一下 暂时效果还凑合,后续的学习过程中可能会优化... ...
  • Reed_qu
  • Reed_qu
  • 2015年01月22日 16:05
  • 4281

python读取文件并上传数据库

1.创建数据库表 CREATE TABLE `store` ( `s_id` int(11) NOT NULL AUTO_INCREMENT, `s_date` varchar(15) NOT...
  • u013252072
  • u013252072
  • 2016年11月15日 15:14
  • 1521
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python读取文件写入数据库中编码问题
举报原因:
原因补充:

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