gpt4 book ai didi

python - 从 python 数据帧插入 DB2 表

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:37 25 4
gpt4 key购买 nike

我正在使用 Python 库 IBM_DB,我可以通过它建立连接并将表读入数据帧。当从 Python 中的数据帧源写入 DB2 表(INSERT 查询)时会出现问题。

下面是连接的示例代码,但有人可以帮助我如何将数据框中的所有记录插入到 DB2 中的目标表中吗?

import pandas as pd
import ibm_db
ibm_db_conn = ibm_db.connect("DATABASE="+"database_name"+";HOSTNAME="+"localhost"+";PORT="+"50000"+";PROTOCOL=TCPIP;UID="+"db2user"+";PWD="+"password@123"+";", "","")
import ibm_db_dbi
conn = ibm_db_dbi.Connection(ibm_db_conn)

df=pd.read_sql("SELECT * FROM SCHEMA1.TEST_TABLE",conn)
print df

如果给定带有硬编码值的 SQL 语法,我也可以手动插入记录:

query = "INSERT INTO SCHEMA1.TEST_TABLE (Col1, Col2, Col3) VALUES('A', 'B', 0)"
print query
stmt = ibm_db.exec_immediate(ibm_db_conn, query)
print stmt

我无法实现的是从数据框插入并将其 append 到表中。我也尝试过 DATAFRAME.to_SQL() 但它出现以下错误:

df.to_sql(name='TEST_TABLE', con=conn, flavor=None, schema='SCHEMA1', if_exists='append', index=True, index_label=None, chunksize=None, dtype=None)

这个错误说:

pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': ibm_db_dbi::ProgrammingError: SQLNumResultCols failed: [IBM][CLI Driver][DB2/LINUXX8664] SQL0204N  "SCHEMA1.SQLITE_MASTER" is an undefined name.  SQLSTATE=42704 SQLCODE=-204

最佳答案

您可以使用 ibm_db.execute_many() 将 pandas 数据帧写入 ibm db2。

subset = df[['col1','col2', 'col3']]

tuple_of_tuples = tuple([tuple(x) for x in subset.values])

sql = "INSERT INTO Schema.Table VALUES(?,?,?)"

cnn = ibm_db.connect("DATABASE=database;HOSTNAME=127.0.0.1;PORT=50000;PROTOCOL=TCPIP;UID=username;PWD=password;", "", "")

stmt = ibm_db.prepare(cnn, sql)

ibm_db.execute_many(stmt, tuple_of_tuples)

关于python - 从 python 数据帧插入 DB2 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44957641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com