SQL炼金术更新多个WHERE条件

2024-09-30 18:27:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从pandas数据帧(getdata1)列rtrend更新MySQL表(mydata1)中的列rtrend,确保值与相应的日期(dt)相对应

例如,来自getdata1df中2016-08-09rtrend值更新相应的MySQL mydata12016-08-09rtrend值。在

另外,在本例中还指定了一个特定的安全id,例如security_id == 'GS'

updateexample = update(mydata1)
      .where(mydata1.c.security_id=='GS', mydata1.c.dt==getdata1['dt'])
      .values(rtrend=getdata1['rtrend'])

这就产生了AttributeError: 'Series' object has no attribute 'translate'请问有人能帮我找到正确的方法吗?在

当前表和数据帧示例:

熊猫数据帧“getdata1”

^{pr2}$

MySQL表'mydata1'

dt         | security_id | rtrend
2016-08-09 | GS          | NULL
2016-08-10 | GS          | NULL

Tags: 数据gsidpandasmysqldtnullsecurity
1条回答
网友
1楼 · 发布于 2024-09-30 18:27:41

以下是我使用上述指导的解决方案

http://docs.sqlalchemy.org/en/latest/core/sqlelement.html#sqlalchemy.sql.expression.bindparam

updatecode1 = update(mydata1).
    where(and_(mydata1.c.dt == bindparam('1dt'), mydata1.c.security_id == bindparam('1security_id')) ).
    values({'rtrend' : bindparam('1rtrend'),'ma200' : bindparam('1ma200')})

然后循环定义每个值并更新表

^{pr2}$

我肯定有一种比这种方式循环更有效的方法,但这对我的问题很有效。在

注意:在上面的“c1”和“d1”中,我使用了int()和float()来将数据类型与我的表相匹配。在

相关问题 更多 >