我有以下设置
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
有人知道这些是什么意思吗?
1条答案
按热度按时间htrmnn0y1#
这是pyodbc的一个已知行为,在这里讨论
https://github.com/mkleehammer/pyodbc/issues/481
对于具有多行的DataFrame,SQLAlchemy调用
.executemany()
,pyodbc返回-1作为.executemany()
调用的.rowcount()
。对于只有一行的DataFrame,SQLAlchemy调用
.execute()
,pyodbc按预期为.rowcount()
返回1(假设没有发生错误)。