Python程序中使用SQLAlchemy时出现乱码的解决方案

  • A+
所属分类:python教程
摘要

这篇文章主要介绍了Python程序中使用SQLAlchemy时出现乱码的解决方案,SQLAlchemy是Python常用的操作MySQL数据库的工具,需要的朋友可以参考下

今天对clubot进行了升级, 但是导入数据后中文乱码, 一开是找资料说是在创建引擎的时候添加编码信息:

engine = create_engine("mysql://root:@localhost:3306/clubot?charset=utf8")

但是这并不行, 然后查看表信息:

> show create table clubot_members;
clubot_members | CREATE TABLE `clubot_members` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `email` varchar(100) DEFAULT NULL,
 `nick` varchar(50) DEFAULT NULL,
 `last_say` timestamp NULL DEFAULT NULL,
 `last_change` timestamp NULL DEFAULT NULL,
 `isonline` int(11) DEFAULT NULL,
 `join_date` timestamp NULL DEFAULT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `email` (`email`),
 UNIQUE KEY `nick` (`nick`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=latin1;

发现原来创建表的时候用的latin1编码, 而老的表是用utf-8编码创建的, SQLAlchemy中并没有发现有创建表时指定指定编码的方法. 所以只能在MySQL本身来找:

> show VARIABLES like "character%%";
+--------------------------+-----------------------------+
| Variable_name      | Value            |
+--------------------------+-----------------------------+
| character_set_client   | utf8            |
| character_set_connection | utf8            |
| character_set_database  | latin1           |
| character_set_filesystem | binary           |
| character_set_results  | utf8            |
| character_set_server   | latin1           |
| character_set_system   | utf8            |
| character_sets_dir    | /data/share/mysql/charsets/ |
+--------------------------+-----------------------------+
8 rows in set (0.00 sec)

> show create database clubot;
+----------+-------------------------------------------------------------------+
| Database | Create Database                          |
+----------+-------------------------------------------------------------------+
| clubot  | CREATE DATABASE `clubot` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)

发现 MySQL默认的和数据库都是latin1的编码, 所以更改数据库配置

复制代码 代码如下:

vi /etc/mysql/my.cnf # MySQL配置文件在Ubuntu上的位置, 其他系统可能有差异

分别在[client] [mysqld]下添加

复制代码 代码如下:

default-character-set = utf8

这时重启MySQL居然起不来, 说default-character-set是无效的变量, 查看MySQL版本发现是5.5, 找资料说5.5的服务端编码设置变量是character-set-server, 所以将[mysqld]上的default-character-set = utf8改为 character-set-server = utf8, 并重启MySQL

然后更改数据库编码:

复制代码 代码如下:

alter database clubot character set utf8;

删除新建的表, 并重新导入数据中文就正常了

复制代码 代码如下:

> use clubot;

> drop table clubot_status;

> drop table clubot_infos;

> drop table clubot_history;

> drop table clubot_members;

  • 微信
  • 分享
  • Python程序中使用SQLAlchemy时出现乱码的解决方案

  • 相关标签:Python MySQL
  • 本文原创发布php教程 ,转载请注明出处,感谢您的尊重!
    • 上一篇:最基础的Python的socket编程入门教程
    • 下一篇:python输出指定月份日历的方法

    相关文章

    相关视频

    • 在Django框架中运行Python应用全攻略
    • 在Python的Django框架中创建和使用模版
    • python获取元素在数组中索引号的方法
    • 浅谈python中截取字符函数strip,lstr...
    • Python程序中使用SQLAlchemy时出现乱...
    • mysql数据库安装
    • PHP MySQL 简介
    • PHP 连接 MySQL
    • PHP MySQL 创建数据库
    • PHP 创建 MySQL 表

    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论

  • Python程序中使用SQLAlchemy时出现乱码的解决方案
  • 立即提交

    专题推荐

    • Python程序中使用SQLAlchemy时出现乱码的解决方案 独孤九贱-php全栈开发教程

      全栈 100W+

      主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门

    • Python程序中使用SQLAlchemy时出现乱码的解决方案 玉女心经-web前端开发教程

      入门 50W+

      主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门

    • Python程序中使用SQLAlchemy时出现乱码的解决方案 天龙八部-实战开发教程

      实战 80W+

      主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习

    作者信息
    Python程序中使用SQLAlchemy时出现乱码的解决方案

    php教程

    认证0级讲师

    最近文章

    发布技术文章

    • 最新文章
    • 热门排行

      Python程序中使用SQLAlchemy时出现乱码的解决方案

    • 二进制数1001001转换成十进制数等于多少
    • python中怎么读取csv文件
    • python是什么意思?怎么读?
    • python与access选哪个
    • 业余学python有用吗
    • python怎么读取图片大小
    • python基础教程适合初学者吗
    • 高中要上python吗

      Python程序中使用SQLAlchemy时出现乱码的解决方案

    • pickle库的使用详解
    • Anaconda的新手使用大全
    • 关于python3学习基础知识总结
    • python爬虫是什么?为什么把python叫做爬虫?
    • Python微信库:itchat的用法详解
    • python爬虫是什么
    • 使用Python可以做什么
    • python如何实现可视化热力图

    推荐视频教程

  • Python程序中使用SQLAlchemy时出现乱码的解决方案 javascript初级视频教程
  • Python程序中使用SQLAlchemy时出现乱码的解决方案 jquery 基础视频教程
  • 视频教程分类

    • php视频教程
    • html视频教程
    • css视频教程
    • JS视频教程
    • jQuery视频教程
    • mysql视频教程
    • Linux视频教程
    • Python视频教程
    • 网站首页
    • PHP视频
    • PHP实战

    PHP中文网:独家原创,永久免费的在线php视频教程,php技术学习阵地!

    Copyright 2014-2019 http://www.php.cn/ All Rights Reserved | 皖B2-20150071-9 Python程序中使用SQLAlchemy时出现乱码的解决方案 皖公网安备 34010402701654号 免责申明赞助与捐赠

    weinxin
    欢迎加入中国站长博客之家
    本站的所有资源都会上传分享到博客之家,希望大家互相学习交流进步。

    发表评论

    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: