繁体   English   中英

AttributeError 'DictCursor' object 没有属性 'update'

[英]AttributeError 'DictCursor' object has no attribute 'update'

我正在尝试将一些 csv 文件导入到 MySQL 数据库上的表中。 csv 文件每天更新,我打算在 python 中使用这个程序来自动化这个过程。 这个想法是:如果信息已经存在,我想更新。 如果信息不存在,我想插入数据。

但我有这个错误:

AttributeError 'DictCursor' object 没有属性 'update'

提前致谢。

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!")

如果您使用的是 psycopg2,则不存在cursor.update() function。 尝试cursor.execute()代替。


在您的查询中, row[0] 也被视为字符串。 因此,将其更改为:

cursor.execute('UPDATE atividade WHERE CD_ATIVIDADE = %d', int(row[0]))

似乎您混淆了两个不同的库。 import MySQLdbfrom flask_mysqldb import MySQL是两个不同的库。

由于您使用的是flask添加此行app.config['MYSQL_CURSORCLASS'] = 'DictCursor'然后调用 cursor cursor=db.connection.cursor()应该可以解决您的问题。

取自官方 git 页面

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM