gpt4 book ai didi

python - 在 SQLAlchemy 中使用字典/数据帧值执行更新

转载 作者:行者123 更新时间:2023-12-01 07:50:43 25 4
gpt4 key购买 nike

我正在尝试更新 user_table 中的 user_iddate_synced。我正在使用MySQL。我的表如下:User(user_id, mail, active, Activity_level, date_synced)。这些值来 self 的 DataFrameUsers:

user_id date_synced
1 2019-05-20 20:48:04
8 2019-05-20 20:48:04

使用dictUsers = dfUsers.to_dict()转换为字典:

{'date_synced': {1: '2019-05-20 20:48:04', 8: '2019-05-20 20:48:04'}}

当我执行时:

conn.execute(user_table.update(), [ 
dictUsers
]
)

我收到错误:

ProgrammingError: (pymysql.err.ProgrammingError) (1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'1: "\'2019-05-20 20:48:04\'", 8: "\'2019-05-20 20:48:04\'"}\' at line 1')
[SQL: UPDATE `User` SET date_synced=%(date_synced)s]
[parameters: {'date_synced': {1: '2019-05-20 20:48:04', 8: '2019-05-20 20:48:04'}}]

预期结果将在数据库中更新。

如何使用 SQLAlchemy 插入此字典?不一定是字典,可以转换。我只是想让它发挥作用。谢谢!

最佳答案

您的参数格式错误。 sqlalchemy 现在不知道如何搜索行和更新内容。正确格式:

[
{'user_id': 1, 'date_synced': '2019-05-20 20:48:04'},
{'user_id': 8, 'date_synced': '2019-05-20 20:48:04'}
]

所以你只需要转换dictUsers。只是一个例子:

from sqlalchemy.sql.expression import bindparam, update
from sqlalchemy.sql.expression import func

data = {'date_synced': {1: '2019-05-20 20:48:05', 2: '2019-05-20 20:48:05'}}
params = []
for user_id, date_synced in data['date_synced'].items():
params.append({'_id': user_id, 'date_synced': date_synced})

stmt = update(User).\
where(User.user_id == bindparam('_id')).\
values({
'date_synced': bindparam('date_synced'),
})

db.session.execute(stmt, params)
db.session.commit()

希望这有帮助。

关于python - 在 SQLAlchemy 中使用字典/数据帧值执行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56226667/

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