gpt4 book ai didi

python - DataFrame to_sql 使用错误的字符集进行替换

转载 作者:行者123 更新时间:2023-11-29 15:17:40 27 4
gpt4 key购买 nike

Panda 的 to_sql() 和 if_exists='replace' 为我的表设置了错误的字符集。为了将多个 csv 复制到 mysql 并忽略行上的错误(如重复错误),我首先将 csv 读取为数据帧,然后将 csv 复制到临时表中,最后使用此临时表执行 INSERT IGNORE 将数据放入正确的表。但是,当使用 if_exists='replace' 将数据帧放入临时表时,它将字符集设置为 latin1 而不是 utf8。由于数据包含中文字符,这会导致错误。有没有办法确保表(和适当的列)使用 UTF8?我还尝试在连接中指定字符集,但这并不能阻止 to_sql 将表(重新)设置为 latin1

相关代码:

import pandas as pd
from sqlalchemy import create_engine
import configparser

#load configuration
config = configparser.ConfigParser()
config.read('config-local.ini')

# construct database address
db_url = 'mysql+mysqlconnector://' + config['mysql']['user'] + ':' + config['mysql']['passwd'] + '@' + \
config['mysql']['host'] + ':' + config['mysql']['port'] + \
'/' + config['mysql']['database'] + '?charset=utf8'

engine = create_engine(db_url)
local_filename = 'some-file.csv'
df = pd.read_csv(local_filename, header=None, encoding='utf8')
try:
# write to database
df.to_sql('TempTable', con=engine, if_exists='replace', index=False)
except Exception as e:
print(e)

最佳答案

在数据库级别设置默认字符集和排序规则解决了该问题。

关于python - DataFrame to_sql 使用错误的字符集进行替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59576953/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com