pandas 为什么.to_sql()在追加到table后返回-1或1?

w80xi6nr  于 2023-11-15  发布在  其他
关注(0)|答案(1)|浏览(172)

我有以下设置

import sqlalchemy
import pandas as pd
server = 'server'
database = 'database'
driver = 'driver'
database_con = f'mssql://@{server}/{database}?driver={driver}'

engine = create_engine(database_con, fast_executemany=True)
con = engine.connect()

df = pd.DataFrame({'col1':[1,2,3]})
df.to_sql(name = 'tableName',con=con,if_exists='append',index=False)

字符串
追加表后,我注意到返回了1-1
文档https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_sql.html声明它应该返回受影响的行数或不返回,但它总是+-1
有人知道这些是什么意思吗?

htrmnn0y

htrmnn0y1#

这是pyodbc的一个已知行为,在这里讨论
https://github.com/mkleehammer/pyodbc/issues/481
对于具有多行的DataFrame,SQLAlchemy调用.executemany(),pyodbc返回-1作为.executemany()调用的.rowcount()
对于只有一行的DataFrame,SQLAlchemy调用.execute(),pyodbc按预期为.rowcount()返回1(假设没有发生错误)。

相关问题