首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用python列表更新mysql中的列?

问如何用python列表更新mysql中的列?
EN

Stack Overflow用户
提问于 2020-08-23 00:22:06
回答 2查看 1.2K关注 0票数 0

所以我一直在四处寻找。我不想问这个问题,没有任何答案,所以帮了我。

基本上,我有一个python列表,我想用它更新mysql列。我似乎找不到正确的查询。我正在使用mysql.connector库连接到数据库。

fourth_query = 'UPDATE trendsincities SET trends = (%s) cursor.executemany(fourth_query, tuple(trends))

其中趋势是包含由逗号分隔的字符串的列表。

对此,我收到一个错误消息:不是所有参数都被使用在SQL语句中。

在这方面需要帮助。将此与已解决的问题联系起来也将是非常感谢的。谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-08-23 00:30:45

trendsincities是一个VARCHAR字段吗?您正在尝试将逗号分隔的-字符串保存到其中吗?如果是这样的话,你会想要这样的东西:

代码语言:javascript
复制
trends = ["best", "city", "new"]
trends_as_csv_string = ",".join(trends)
sql = "UPDATE trendsincities SET trends=%s"
cursor.execute(sql, trends_as_csv_string)

不过,我对此有点怀疑。如果是新产品的话,我想你可能想要一个INSERT?或者,如果是UPDATE,则可能要使用WHERE子句,例如:

代码语言:javascript
复制
"UPDATE trendsincities SET trends='best,city,new' WHERE city='New York'"

否则,每次后续更新都将覆盖前面的更新。

但是,如果您想插入每个趋势,则可以使用以下模式:

代码语言:javascript
复制
trends = ["best", "city", "new"]
for trend in trends:
    cursor.execute('INSERT INTO trendsincities (trend) VALUES (%s)', trend)

然后,在sql语句的末尾,您将希望根据是否打开connection.commit()发出一个autocommit。

希望上述方法中的一种将有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2021-08-25 13:50:45

对我有用的是:

代码语言:javascript
复制
row = 0
for i in range(0, len(values)):
        row +=1
        val = values[i]
        sql = f"UPDATE teste SET percent = {val} WHERE id = {row}"
        cursor.execute(sql)
        connection.commit()

Obs:我正在使用mysql.connector与MySQL建立连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63542298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档