
这条数据是有中文的,所以很明显是编码问题!
我插入的数据格式:
以下是我的解决办法!
看我的文章,中有一篇是修改MySql的my.ini配置文件,修改MySql的字符编码格式修改成utf8格式的编码!
有可能你这步改完就可以了! 也有可能这步 *** 作完还是报错!那就看第二步。
第一步 *** 作完了,但是添加数据的时候还是报错,原因是因为第一步还没 *** 作完,你就已经建了一张表,我的表名是app_book。所以这张app_book的字符编码还是按我没修改字符编码之前的编码格式,所以这个时候我需要将这张表的编码格式转换一下,具体 *** 作如下!
比如:你可以先查看这张app_book表中的每个字段的编码格式
改变表的编码,为 utf8mb4 或者 utf8
OK! 完成以上 *** 作,再次执行ORM语句:
这次就没报错了,添加成功!
python下mysql的客户端主流有三个pymysql, mysqldb 和 mysql connector。很多人在选择客户端时,没有什么要求,都是按照前人或者经验主义选择,但是有真的研究他们之间的性能差别,以及是否符合你的项目需要,或者遇到性能瓶颈时,是否了解他们之间的差别。
本文将从2个维度来分析他们的性能,一个是直接使用,另一个是使用orm辅助使用,来对比三个的性能差别。
mysql的python客户端目前市场主流有三个,分别是 mysqldb (mysqlclient), mysql connector python 和 pymysql。
mysqldb (mysqlclient) 是mysql官方推出基于C库来写mysql连接库,非纯python。之前mysqldb只支持python2,后面mysqlclient在mysqldb的基础上fork来支持python3。
mysql connector for python 是mysql官方推出的纯python实现的连接库。
pymysql 是纯python写的主流连接库。
查询库表返回 100 条记录
测试方法
重复 *** 作100次
测试结果
测试结论
mysqlclient 效果比其他两个快近100%, 毕竟是依赖c的库,性能是有保障的,connector跟pymysql的就不分上下很接近。
测试方法
重复 *** 作100次
测试结果
测试结论
发现connector比其他两个快将近80%多,其余两个效果也很接近。但是这里会发现使用ORM会整体慢1个数据级。
如果是追求极致性能,建议使用mysqlclient,如果想使用ORM,建议使用mysql connector for python, 后面附带源码。
https://github.com/roger777luo/msyql_client_bench.git
区别如下:
1、主键不同
mysql一般使用自动增长类型,在创建表时只要指定表的主键auto increment,插入记录时,不需要在指定该记录的主键值,mysql将自动增长。oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值赋给该字段即可,只是ORM框架是只要是native主键生成策略即可。
2、数据库的目的不同
在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。
3、特点不同
oracle是要付费的,是强大的商业化数据库,安全性高,优点一大堆;mysql开源,可以不付费,但是mysql不支持视图,不支持commit-rollback,有效处理commit-rollback将需要完全不同于mysql使用的表布局,mysql也将需要而外的线程在表上做自清工作,而且磁盘用量将更高,而不用它,mysql比几乎所有的其他SQL数据库都快2到4倍,所以小型开发用mysql是很好的。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)