gpt4 book ai didi

python - 截断表不适用于 SQL Server sqlalchemy 引擎和 pandas

转载 作者:太空狗 更新时间:2023-10-29 17:55:46 26 4
gpt4 key购买 nike

我可以使用 sqlalchemy 和 pandas 成功查询和插入数据:

from sqlalchemy import create_engine
import pandas as pd
engine = create_engine('mssql://myserver/mydb?driver=SQL+Server+Native+Client+11.0?trusted_connection=yes')

读取临时表:

sql_command = """
select top 100 * from tempy
"""

df = pd.read_sql(sql_command, engine)
print df

tempID tempValue
0 1 2

追加新数据:

df_append = pd.DataFrame( [[4,6]] , columns=['tempID','tempValue']) 
df_append.to_sql(name='tempy', con=engine, if_exists = 'append', index=False)

df = pd.read_sql(sql_command, engine)
print df

tempID tempValue
0 1 2
1 4 6

尝试截断数据:

connection = engine.connect()
connection.execute( '''TRUNCATE TABLE tempy''' )
connection.close()

再次读表,截断失败:

df = pd.read_sql(sql_command, engine)
print df

tempID tempValue
0 1 2
1 4 6

最佳答案

我对 pandas 0.19.2 和 sqlalchemy 1.1.5 有同样的问题。

正如我所见,当运行 TRUNCATE 语句时,autocommit 不会在 engine.execute() 中强制执行。如果我手动强制执行,则 TRUNCATE 可以完美运行:

from sqlalchemy.sql import text as sa_text

engine.execute(sa_text('''TRUNCATE TABLE tempy''').execution_options(autocommit=True))

DROP 在不强制 autocommit 的情况下完美地工作真是太棒了...

关于python - 截断表不适用于 SQL Server sqlalchemy 引擎和 pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42079419/

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