openstack的sql connection 需要配置成utf-8才不会中文乱码

sql_connection = mysql://nova:xxx@qa-mysql1:3306/nova?charset='utf-8'

但是如果之前就没有设置utf-8,数据库又不能随便清空,想要更新openstack数据库某个字段,就不能直接采用utf-8的数据库连接,否则会出现插入到数据库中的是中文,但是openstack中显示的是乱码。更坏的是如果插入的是全角中文字符,openstack就会出错。

那么如何更新这种情况下的数据库呢?

答案很简单,就是采用和openstack一样的数据库连接方式,openstack使用的是 sqlalchemy 我写一个一个简单的数据库连接如下

#!/usr/bin/Python# coding=utf-8from sqlalchemy import create_enginefrom sqlalchemy import MetaDatafrom sqlalchemy.sql import selectfrom sqlalchemy.sql import updateengine = create_engine('mysql://nova:password@qa-mysql1:3306/nova',convert_unicode=True)metadata=MetaData()meta=metadatameta.reflect(bind=engine)conn=engine.connect()secgroup=meta.tables['security_groups']u=update(secgroup).where(secgroup.c.id==60).values(name='中文')result=conn.execute(u)

这里需要注意的是在create_engine的时候,需要添加convert_unicode=True,如果不添加,会出如下解码错误的错误

query = query % db.literal(args)

File "/usr/share/pyshared/MySQLdb/connections.py", line 264, in literal

return self.escape(o, self.encoders)

File "/usr/share/pyshared/MySQLdb/connections.py", line 202, in unicode_literal

return db.literal(u.encode(unicode_literal.charset))

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-1: ordinal not in range(256)

linux open出现乱码,OpenStack 数据库中文乱码问题相关推荐

  1. oracle数据库表中文乱码,oracle数据库中文乱码的原因与解决

    资料: 很久以来,字符集一直是困扰着众多Oracle爱好者的问题,在此我们就这个问题做一些分析和探讨. 首先,我们要明确什么是字符集?字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包括关系 ...

  2. linux mysql插入数据乱码_linux mysql数据库中文乱码

    mysql中文乱码 mysql是我们项目中非常常用的数据型数据库.但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况.下面就来介绍一下如何彻底解决数据库中文乱码情况. 1.中文乱码 1. ...

  3. mysql数据库 中文乱码_数据库 MySQL中文乱码解决办法总结

    MySQL中文乱码解决办法 前言: MySQL是我们项目中非常常用的数据型数据库.但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况.下面就来介绍一下如何彻底解决数据库中文乱码情况. 1 ...

  4. springMVC保存数据到mysql数据库中文乱码问题解决方法

    springMVC保存数据到mysql数据库中文乱码问题解决方法 参考文章: (1)springMVC保存数据到mysql数据库中文乱码问题解决方法 (2)https://www.cnblogs.co ...

  5. Mybatis插入MySQL数据库中文乱码

    Mybatis插入MySQL数据库中文乱码 在dataSource.properties配置文件中设置useUnicode=true&characterEncoding=utf-8编码即可. ...

  6. PHP——PHP读取MySQL数据库中文乱码解决方案

    问题描述 PHP读取MySQL数据库中文乱码 解决方案 静态页面  <head> <metahttp-equiv="Content-Type"content=&q ...

  7. php连接中文数据库乱码问题,如何解决php的数据库中文乱码问题

    php数据库中文乱码的解决办法:1.在HTML代码中的文件头中加入charset属性:2.在php代码的开始部分加入代码"charset=utf-8":3.数据库中表字段中存储中文 ...

  8. linux系统下codeblocks控制台打印中文乱码

    linux系统下codeblocks控制台打印中文乱码 在linux下安装codeblocks后,打印中文出现如下问题: #include <stdio.h> #include <s ...

  9. php查询mysql数据库乱码_PHP怎样处理查询MySQL数据库中文乱码?_后端开发

    PHP如何处理查询MySQL数据库中文乱码? 1.将MySQL数据库默许的编码是UTF-8: 2.在MySQL中建立表时,将字符集设置为UTF-8: 3.在PHP中查询数据之前,将数据库编码设置为UT ...

最新文章

  1. 学好单片机能找什么工作?单片机好学吗?
  2. 当当的羊毛又该剪了!官方活动基础上的额外优惠券,速领!
  3. Linux Centos7 下安装Mysql - 8.0.15
  4. Bootstrap~多级导航(级联导航)的实现
  5. 二十三、PHP框架Laravel学习笔记——集合的常用方法
  6. android蓝牙串口 hc06,Android手机通过蓝牙模块HC-06连接Arduino串口输出
  7. java中子类与父类中隐含的this引用的分析
  8. zabbix历史数据mysql_处理Zabbixl历史数据库解决办法三---使用MySQL中间件为Zabbix数据库扩容...
  9. ensp中小型企业网配置_如何构建1000人规模的网络,详细配置?
  10. Python学习---入门导学篇
  11. java 二分查找_Java数组之Arrays方法
  12. 2-6 刮刮乐和双色球
  13. CSS3 transform对fixed元素造成的影响笔记
  14. Sensei for Mac(系统优化清理工具)
  15. python学生管理系统gui版好例子网_python界面版学生管理系统 相关实例(示例源码)下载 - 好例子网...
  16. 如何在html中使用 es6语法让浏览器识别
  17. stm32+ucos,si4438调试
  18. 移动硬盘坏了不能被计算机识别,移动硬盘无法访问 “文件或目录损坏且无法读取” 怎么办?...
  19. 『贪心』阿狸和桃子的游戏
  20. 【期末复习】操作系统

热门文章

  1. liunx centos 如何添加一个新的网卡
  2. MySQL-->索引-->如何创建索引,创建原则
  3. python excel数据框_python – 熊猫数据框到Excel表
  4. 多线程中的事务回滚,你真的用对了吗?
  5. 面试官:什么是大事务?小林哥:就是 很大...的...事务??
  6. 为什么代码规范要求SQL语句不要过多的join?
  7. 面试要15K,HR说你只值10K,怎么斗得过?
  8. Java多线程学习四十:如何写一个必然死锁的例子
  9. 区块链技术基础语言(三十二):Go语言网络编程(下)
  10. Sort方法根据T类某个字段对泛型集合ListT排序