python使用SQL语句操作数据库中文乱码的解决
2015-12-10 00:00
811 查看
第一次使用python进行数据库操作,遇到了中文编码的问题,新建表出现下面异常:
在SQLyog里面进行sql调试语句,起初也出错,将表属性里的字符集改为'utf-8'后成功创建,而程序依然出错。心想着应该在某个函数有类似的功能.
我经过了各种编码转换;如string.decode('utf-8').encode('gbk'),然并卵...
网上也看到吐槽(参烤),因为大家忙了半天才发现原来就因为一个参数 'charset';
废话不多,贴码。
_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\xb5\x81\xe5\x9f\x9f VARCHAR(20),\n
在SQLyog里面进行sql调试语句,起初也出错,将表属性里的字符集改为'utf-8'后成功创建,而程序依然出错。心想着应该在某个函数有类似的功能.
我经过了各种编码转换;如string.decode('utf-8').encode('gbk'),然并卵...
网上也看到吐槽(参烤),因为大家忙了半天才发现原来就因为一个参数 'charset';
废话不多,贴码。
# -*- encoding: UTF-8 -*- import MySQLdb conn= MySQLdb.connect( host='localhost', port = 3306, user='root', passwd='1234', charset='utf8' #这个参数... ) cur = conn.cursor() conn.select_db('information_schema') fl = cur.execute("SELECT * FROM tables WHERE table_name='"+dbname+"';") conn.select_db('Grab_Hydrology_Data') if 0 == fl : print 'new table:' + dbname creatsql = "CREATE TABLE " + dbname + """ (id VARCHAR(20) primary key, 流域 VARCHAR(20), 行政区 VARCHAR(30), 河名 VARCHAR(30), 站名 VARCHAR(30), 时间 VARCHAR(30), 水位 VARCHAR(10), 流量 VARCHAR(10), 警x戒水位 VARCHAR(10))""" #print creatsql cur.execute(creatsql) vs = ''' 省略...) ''' try: cur.execute('INSERT INTO '+ dbname + ' VALUES (' + vs) conn.commit() # 提交到数据库执行 except: print '已经存在:' + vs conn.rollback() # 发生错误时回滚 break cur.close() conn.close()
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- install and upgrade scrapy
- source命令执行SQL脚本文件
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- SQL中的三值逻辑
- MySQL创建用户及权限控制