返回顶部
首页 > 资讯 > 数据库 >Python调用MySQLdb插入中文乱码的解决
  • 549
分享到

Python调用MySQLdb插入中文乱码的解决

2024-04-02 19:04:59 549人浏览 安东尼
摘要

目录Mysqldb插入中文乱码mysqldb使用utf-8 编码插入中文数据使用环境第一个问题:插入中文失败第二个问题:能插入之后无法在Mysql中保存刚才插入的数据MySQLdb插

MySQLdb插入中文乱码

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import MySQLdb
def main():
    fullname = "赵钱孙李"
 
    conn = MySQLdb.connect(host='localhost', user='root',passwd='123', db='account', charset='utf8')  # OK
    #conn = MySQLdb.connect(host='localhost', user='root',passwd='123', db='account')  # Error!!!
    cursor = conn.cursor()
    cursor.execute("insert into account (username,passWord) values ('%s','%s')" % (fullname, "111"))
    conn.commit()
    cursor.close()
    conn.close()
 
if __name__ == "__main__":
    main()

如果从终端查询到数据库中的中文是乱码,那么在连接时给出charset参数即可(当然数据库和表必须全部都是utf-8的)。

否则默认插入的字符应该是latin-1的(用fullname.decode('utf8')时报该错误)。

然后将从数据库中读取的中文输出到网页,如果没有任何内容显示,加入以下代码可解决:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

Python内部处理编码默认是ascii的:

print sys.getdefaultencoding()

MySQLdb使用utf-8 编码插入中文数据

这几天忙着帮人做一个从网页抓取股票信息并把相应信息存入MySQL中的程序。

使用环境

  • Python 2.5 for windows
  • MySQLdb 1.2.2 for Python 2.5
  • MySQL 4.1.22

在写程序中遇到了些怪的故障。

第一个问题:插入中文失败

这个是由于字符编码问题引起的。MySQL安装时我已经设置为utf8编码,表也是使用utf8编码建立。程序中只要在开头写好#-*- coding: utf-8 -*-,并在设定连接字符串时候写清使用utf8就可以了conn=MySQLdb.connect(host="127.0.0.1",user="WEBdb",passwd="web123",db="web",charset="utf8")。

设置之后从MySQL中取出的以utf8编码保存的中文也不会发生乱码。 

对中文字符串,如:a = "浦发银行",在进行插入操作前做一下编码转换a = a.decode("gbk").encode("utf-8")。然后进行插入操作就没有任何问题了。

第二个问题:能插入之后无法在MySQL中保存刚才插入的数据

经过检查数据可以被正确的插入,但是连接断开之后不保存在表中。经过检查发现原来是漏了conn.commit()。需要在语句执行之后提交操作。

源代码如下:

 # -*- coding: utf-8 -*-
 import  sys,MySQLdb
conn = MySQLdb.connect(host = " 127.0.0.1 " ,user = " webdb " ,passwd = " web123 " ,db = " web " ,charset = " utf8 " )     # 需要设定一下charset为utf-8
 cursor = conn.cursor()     # 生成连接的指针对象
 # 进行字符串编码转换并进行插入
 a  =   " 浦发银行 "
a  =  a.decode( " gbk " ).encode( " utf-8 " )     # 编码转换为utf-8
 sql = " insert into stocklist (stockno,stockname) values (%s,%s) "      # 生成sql语句
 param = ( ' 600000 ' ,a)     # 生成sql语句的参数
 n  =  cursor.execute(sql,param)     # 执行sql语句
# 以上操作等价于n = cursor.execute("insert into stocklist (stockno,stockname) values ('430004','"+ "浦发银行".decode("gbk").encode("utf-8") + "')")
 print  n
conn.commit()  # 提交操作结果
 # 进行查询操作检查刚刚执行的插入操作结果
 n  =  cursor.execute( " select * from stocklist " )
 for  row  in  cursor.fetchall():
     print  row[0]  +  row[ 1 ]
cursor.close()     # 关闭指针
 conn.close()     # 关闭连接

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

您可能感兴趣的文档:

--结束END--

本文标题: Python调用MySQLdb插入中文乱码的解决

本文链接: https://lsjlt.com/news/143870.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python调用MySQLdb插入中文乱码的解决
    目录MySQLdb插入中文乱码MySQLdb使用utf-8 编码插入中文数据使用环境第一个问题:插入中文失败第二个问题:能插入之后无法在MySQL中保存刚才插入的数据MySQLdb插...
    99+
    2024-04-02
  • 如何解决Python调用MySQLdb插入中文乱码的问题
    这篇文章主要介绍如何解决Python调用MySQLdb插入中文乱码的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQLdb插入中文乱码#!/usr/bin/python# -*- cod...
    99+
    2023-06-29
  • mysql中插入表数据中文乱码的解决方法
    小编给大家分享一下mysql中插入表数据中文乱码的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql中插入表数据中...
    99+
    2024-04-02
  • Python中文乱码解决
    python 添加中文注释时出现运行失败。需要在顶部设置编码。# coding=UTF-8 ''' Created on 2013-8-28 @author: xmyj-0210 ''' n...
    99+
    2023-01-31
    乱码 中文 Python
  • mysql中插入表数据中文乱码问题的解决方法
    一、问题 开发中遇到将其它数据库数据插入到mysql数据库表中一直会报类似如下错误: Incorrect string value: '\xE6\x88\x91' for column 'name' at...
    99+
    2024-04-02
  • python shell 中文乱码解决
    python的默认文件编码是ASCll,当文件包含中文的时候,如果用python shell测试可能会出现以下错误: Non-ASCII character '\xe4' in file D:\Python27\test1.py on l...
    99+
    2023-01-31
    乱码 中文 python
  • python web.py 解决中文乱码
    最开始没注意数据库的编码,使用默认的方式去连接: db = web.database(dbn='mysql', user='root', pw='lihuipeng007', host='localhost', db='test')    ...
    99+
    2023-01-31
    乱码 中文 python
  • Linux下Tomcat向MySQL插入数据中文乱码解决办法
    Linux下Tomcat向MySQL插入数据中文乱码解决办法 一、问题 在windows上面使用eclipse开发的项目在windows上面运行一切正常,部署到腾讯云时出现向MySQL数据库中插入数据是中文...
    99+
    2024-04-02
  • 解决Linux下Tomcat向MySQL插入数据中文乱码问题
    一、问题 在windows上面使用eclipse开发的项目在windows上面运行一切正常,部署到腾讯云时出现向MySQL数据库中插入数据是中文乱码 二、解决办法 1、尝试一 直接在linux上面使用in...
    99+
    2024-04-02
  • python中文编码乱码问题的解决
    目录前言:一、什么是字符编码。1.ASCII2.GB23123.Unicode4.UTF-8二、Python2中的字符编码三、decode()与encode()方法四、一个字符编码的...
    99+
    2024-04-02
  • plsql导入中文乱码如何解决
    在导入中文数据时,如果出现乱码,可以尝试以下方法解决: 修改数据库字符集:可以将数据库的字符集修改为支持中文字符的字符集,例如U...
    99+
    2024-02-29
    plsql
  • mysql设置插入中文不乱码的方法
    mysql设置插入中文不乱码的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql设置插入中文不乱码的方法:首先在...
    99+
    2024-04-02
  • java插入mysql数据乱码解决方法
    方式一:设置编码统一1.设置eclipse环境编码(推荐:java视频教程)2.设置mysql环境编码mydb为需要修改的数据库名称方式二:创建数据库时设置编码1.mysql创建database时设置编码create database my...
    99+
    2017-09-20
    java
  • python json.dumps中文乱码问题解决
    json.dumps(var,ensure_ascii=False)并不能完全解决中文乱码的问题 json.dumps在不同版本的Python下会有不同的表现, 注意下面提到的中文乱...
    99+
    2024-04-02
  • 怎么解决python pdfkit 中文乱码
    这篇文章主要介绍“怎么解决python pdfkit 中文乱码”,在日常操作中,相信很多人在怎么解决python pdfkit 中文乱码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决python pd...
    99+
    2023-06-07
  • Python中matplotlib中文乱码解决办法
    Matplotlib是Python的一个很好的绘图包,但是其本身并不支持中文(貌似其默认配置中没有中文字体),所以如果绘图中出现了中文,就会出现乱码。 matplotlib绘制图像有中文标注时会有乱码问题。...
    99+
    2022-06-04
    乱码 解决办法 中文
  • phpMyAdmin导入csv中文乱码的解决方法
    小编给大家分享一下phpMyAdmin导入csv中文乱码的解决方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!phpMyAdmin导入csv中文乱码怎么办项目中用到含有中文字段的数据CS...
    99+
    2024-04-02
  • 解决PHP写入txt文件中文乱码的技巧
    解决PHP写入txt文件中文乱码的技巧 随着互联网的迅猛发展,PHP作为一种广泛应用的编程语言,被越来越多的开发者所使用。在PHP开发中,经常需要对文本文件进行读写操作,其中包括写入中...
    99+
    2024-04-02
  • php向mysql插入数据乱码怎么解决
    在使用PHP写入MySQL数据库时,有时会遇到数据插入后出现乱码的情况。出现乱码的原因可能有很多,例如字符集不匹配、非UTF-8字符集、数据库连接字符集等等。下面我们来分析一下这些可能导致乱码的原因,并提供一些解决方法。一、字符集不匹配当P...
    99+
    2023-05-14
  • MySQL插入数据显示乱码怎么解决
    在MySQL中插入数据显示乱码通常是由于数据库的字符集设置不正确导致的。要解决这个问题,可以尝试以下几种方法: 检查数据库字符集设...
    99+
    2024-04-09
    MySQL
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作