作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我可以使用 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/
我是一名优秀的程序员,十分优秀!