【发布时间】:2022-01-17 18:57:38
【问题描述】:
我正在尝试将一些 CSV 文件导入到 MySQL 数据库上的表中。 CSV 文件每天更新,我的目的是在 python 中使用这个程序来自动化这个过程。 这个想法是:如果信息已经存在,我想更新它。如果信息不存在,我想插入数据。
但是我遇到了这个错误:
属性错误 “DictCursor”对象没有“更新”属性
提前致谢。
csv_data = csv.reader(open('ATEG_REGIONAL_MG_DADOS_TB_ATIVIDADE.csv', encoding='ISO-8859-15'), delimiter=';')
next(csv_data)
for row in csv_data:
for i, l in enumerate(row):
if row[i] == '':
row[i] = None
cursor.execute('SELECT * FROM atividade WHERE CD_ATIVIDADE=%s', row[0])
if cursor.fetchall():
cursor.update('UPDATE atividade WHERE CD_ATIVIDADE = row[0]'),
else:
cursor.execute('INSERT INTO atividade (CD_ATIVIDADE, NM_ATIVIDADE, ST_ATIVO, COD_USUARIO_INCLUSAO, COD_USUARIO_ALTERACAO, DAT_INCLUSAO, DAT_ALTERACAO, CO_ATIVIDADE_REZOLVE, ROWID, FLG_SAFRA, FLG_PRODUTIVO, FLG_TIPO_ATIVIDADE, FLG_INDICADOR_ISA) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)', row)
# close the connection to the database.
db.commit()
cursor.close()
print("Imported!")
【问题讨论】:
-
只需向 MySQL 提供 CSV。然后将其加载到临时表(LOAD DATA)并合并到工作表(REPLACE INTO 或 INSERT .. ODKU)。这是更简单、更快速且成本更低的过程。
-
谢谢,我会努力的! @Akina
标签: python mysql sql csv pymysql