有没有办法使用 pandas 用一些新数据更新 SQL 表中的列?也许有一个值列表?本质上我想做的是..
我正在使用的表很大(> 100,000 行)。
我可以执行步骤 1、2 和 3,但我不知道如何执行步骤 4 并将更新后的值放回到数据库表中...
import pandas as pd
import pyodbc as odbc
sql_conn = odbc.connect(<connections tuff>)
query = "SELECT * FROM myTable"
df = pd.read_sql(query, sql_conn)
myNewValueList = [11,12,13,14,15,16,17,18,19,20,….] # long list of new values to update with
df[newColumnValues] = myNewValueList
sql = "UPDATE myTable SET myColumn = %s"
val = df[newColumnValues]
mycursor.execute(sql_conn , val)
import pandas as pd
import pyodbc as odbc
# Connect to the database
sql_conn = odbc.connect(<connection_stuff>)
# Read the data
query = "SELECT * FROM myTable"
df = pd.read_sql(query, sql_conn)
# Update the DataFrame
myNewValueList = [11, 12, 13, 14, ...] # Your new values
df['myColumn'] = myNewValueList
# Update statement
sql = "UPDATE myTable SET myColumn = ? WHERE <PrimaryKeyColumn> = ?"
# Update the database
cursor = sql_conn.cursor()
for index, row in df.iterrows():
cursor.execute(sql, (row['myColumn'], row['<PrimaryKeyColumn>']))
# Commit the changes and close the connection
sql_conn.commit()
cursor.close()
sql_conn.close()
在上面的代码片段中,将
<connection_stuff>
、<PrimaryKeyColumn>
和 myColumn
替换为您的实际连接详细信息、主键列和要更新的列。主键用于唯一标识更新的每一行。
此方法对每一行执行 SQL 更新,这对于大型数据集可能不是很有效。为了更有效的批量更新,您可能需要考虑 pandas 的
to_sql
方法。