Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python列表进行SQL迭代更新_Python_Sql_Database_Postgresql - Fatal编程技术网

从python列表进行SQL迭代更新

从python列表进行SQL迭代更新,python,sql,database,postgresql,Python,Sql,Database,Postgresql,你们知道如何在不使用cur.executemany的情况下从python列表更新数据库吗?使用cur.executemany时,我在API调用或其他方面遇到问题。下面还有什么方法可以解决这个问题?谢谢大家! import psycopg2 conn = psycopg2.connect(DATABASE_URL) # Postgres cur = conn.cursor() list_account = [('Bob', 55), ('John', 10)] cmd_type = ("""

你们知道如何在不使用cur.executemany的情况下从python列表更新数据库吗?使用cur.executemany时,我在API调用或其他方面遇到问题。下面还有什么方法可以解决这个问题?谢谢大家!

import psycopg2 
conn = psycopg2.connect(DATABASE_URL) # Postgres
cur = conn.cursor()

list_account = [('Bob', 55), ('John', 10)]
cmd_type = ("""
  UPDATE db.table
  SET name = %s
  WHERE age = %s""")
cur = conn.cursor()
cur.executemany(cmd_type, list_people)
我知道下面很难看,但我做到了

for i in range(len(list_account)):
  cmd_type = ("""
    UPDATE db.table
    SET name = '{}'
    WHERE age = '{}'""".format(list_account[i][0], list_account[i][1]))

  cur = conn.cursor()
  cur.execute(cmd_type) 
  conn.commit()

不是答案,但我不想编辑你的代码,因为我还没有安装Postgres

您使用的库似乎没有使用ExecuteMy进行优化。所以你能试试下面的代码吗,这是我通常做的,简单易懂的代码。我在首都发表了评论,因为有几件事没有必要的意义,但却是可能的


import psycopg2
DATABASE_URL='db'

conn = psycopg2.connect(DATABASE_URL) # Postgres
#ARE YOU SURE YOU DON'T NEED USERNAME, PASSWORD AND PORT?
cur = conn.cursor()

list_account = [('Bob', 55), ('John', 10)]

#IN YOU UPDATE STATEMENT YOU CALL THE DATABASE NAME: "db", AND THE TABLE 'table'
#ARE YOU SURE ABOUT THIS?
cmd_type = ("""
  UPDATE db.table
  SET name = %s
  WHERE age = %s""")
cur = conn.cursor()
for params in list_account:
    cur.execute(cmd_type, params)
    conn.commit()


使用

这行吗

如果不尝试此操作:

import psycopg2
DATABASE_URL='db'

conn = psycopg2.connect(DATABASE_URL) # Postgres
#ARE YOU SURE YOU DON'T NEED USERNAME, PASSWORD AND PORT?
cur = conn.cursor()

list_account = [('Bob', 55), ('John', 10)]

#IN YOU UPDATE STATEMENT YOU CALL THE DATABASE NAME: "db", AND THE TABLE 'table'
#ARE YOU SURE ABOUT THIS?
cmd_type = ("""
  UPDATE `table`
  SET name = %s
  WHERE age = %s""")
cur = conn.cursor()
for params in list_account:
    cur.execute(cmd_type, params)
    conn.commit()

您可以在连接上执行然后提交。您使用哪个库?不确定您使用的是什么,但为其他人这样做了:只需查看插入线程并遍历变量列表。此代码使用mysq连接器python MySQL本机库,运行良好。同样,这取决于您使用的数据库和库0在执行此代码后是否提交连接?不熟悉已编辑的最后一位数据库?MySQL?MSSQL?您使用哪个库?