• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python程序中使用SQLAlchemy时出现乱码的解决方案

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python sqlalchemy,python3 sqlalchemy,sqlalchemy,flask sqlalchemy,sqlalchemy中文文档等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

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

</div>

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

> 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;

</div>

发现原来创建表的时候用的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)

</div>

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

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

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

然后更改数据库编码:

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

> drop table clubot_status;
> drop table clubot_infos;
> drop table clubot_history;
> drop table clubot_members;</div>

</div>

您可能想查找下面的文章:

  • 浅析python中SQLAlchemy排序的一个坑
  • Python的SQLalchemy模块连接与操作MySQL的基础示例
  • Python的SQLalchemy模块连接与操作MySQL的基础示例
  • 教大家使用Python SqlAlchemy
  • 编写Python脚本把sqlAlchemy对象转换成dict的教程
  • 编写Python脚本把sqlAlchemy对象转换成dict的教程
  • Python的SQLAlchemy框架使用入门
  • Python程序中使用SQLAlchemy时出现乱码的解决方案
  • Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
  • Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)

相关文章

  • python中redis的安装和使用
  • python dict remove数组删除(del,pop)
  • 常用python编程模板汇总
  • 浅谈Python 集合(set)类型的操作——并交差
  • python正则表达式match和search用法实例
  • 通过python下载FTP上的文件夹的实现代码
  • Python算法应用实战之队列详解
  • Python2.x利用commands模块执行Linux shell命令
  • Python去除列表中重复元素的方法
  • python递归查询菜单并转换成json实例

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python基础教程之tcp socket编程详解及简单实例
    • Windows下用py2exe将Python程序打包成exe程序的教程
    • python socket网络编程步骤详解(socket套接字使用)
    • 让python的Cookie.py模块支持冒号做key的方法
    • python中self原理实例分析
    • Python上传package到Pypi(代码简单)
    • Python 中 list 的各项操作技巧
    • python发布模块的步骤分享
    • python使用正则搜索字符串或文件中的浮点数代码实例
    • python实现的简单抽奖系统实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有