sql数据库中遇到的bug记录以及解决方法

1.排序规则不统一导致where时“=”操作出错

*报错:*Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation ‘=’。
解决方式:a.在select语句中的解决方式 在出问题的表后面加入COLLATE utf8mb4_unicode_ci;b.在设计表的时候,设定每一列的排序规则统一;

2.data.to_sql()参数设置

错误:没有设置指定格式,写入数据库时候,变成了text,与其它数据格式不统一,不方便后续操作。pd.to_sql()使用方法
解决方式:例如:

import sqlalchemy
from sqlalchemy import create_engine
import pymysql
df_sql.to_sql('表名',engine_ts,if_exists = 'append',index=None,dtype={
                 'Accper':sqlalchemy.VARCHAR(length=255),
                 'Degree':sqlalchemy.INT(),
                 'Feps':sqlalchemy.sql.sqltypes.Float,
                 'ReportDate':sqlalchemy.sql.sqltypes.Date
})

3.字典,dataframe相互转换

学习:a.将字典列表转换为Pandas DataFrame b.dataframe转dict

df_sql = pd.read_sql(sql1,connstr)
dict1 = df_sql.set_index('ID').to_dict()
#设定某个id为index
dict2 = df_sql.to_dict('split')
print(dict2['data'])
#文中的另一种dataframe转字典方式
df = pd.DataFrame.from_dict(dict1)
#把字典转成dataframe
df.to_sql()
#这一步出错了,目前还没解决。应该是设了index('ID')原因。可能需要重设字典的index?

4.

to be continue…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值