从Python笔记本更新IBM DB2云中的表

70gysomp  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(173)

我需要用Python Notebook中dataframe中存储的值更新IBM DB2云中的列。我可以从Python Notebook连接到DB2。现在我需要用dataframe中存储的值更新DB2云中表的一列。下面是我的代码:问题是我有100个记录在df相同的必须更新的表,但与此代码10000个记录在表中更新,这意味着100*100.寻找支持

tuple_of_tuples = tuple([tuple(x) for x in df.values])
load_db2_sql = "UPDATE schema.tablename SET Columnname = ?"
stmt = ibm_db.prepare(conn, load_db2_sql)
ibm_db.execute_many(stmt, tuple_of_tuples)
8ftvxx2r

8ftvxx2r1#

在几次失败的尝试之后,我想出了一种不同的思维方式,解决了你所面临的问题。
简单的回答:使用pandas read_sql()方法将您的表读入 Dataframe ,并使用命令to_sql()将接收到的表列值替换为新值和更新值。

范例:

假设下面是SQL表,名为dummy_test,模式名为TEST_SCHEMA
第一个
1.将此表读入panda Dataframe
第一个
1.现在,假设您要使用的值的 Dataframe 名为df_with_values_to_update,列名为A,其中包含您要更新的以下值

df_with_values_to_update
    A
0   10
1   11
2   12
3   13
4   14
5   15
6   16
7   17
8   18
9   19

1.将db_table列'A'值替换为df_with_values_to_update列'A'值

db_table['a'] = df_with_values_to_update['A']

1.使用to_sql()方法写回db2

db_table.to_sql('dummy_test', engine, schema='TEST_SCHEMA', if_exists='replace', index=False)

您可以再次查询步骤2中的db2,以确认这些值已经被替换。

相关问题