【发布时间】:2016-07-28 23:34:48
【问题描述】:
我得到以下代码。问题是我可以使用 panda.read_sql 读取数据,但我无法使用 DataFrame.to_sql() 函数。
%matplotlib inline
import pandas as pd
import pyodbc
from datetime import datetime
import numpy as np
import matplotlib.pyplot as plt
pd.set_option('display.max_rows', 50)
pd.set_option('display.max_columns', 15)
pd.set_option('precision', 4)
conn = pyodbc.connect(r"Driver={SQL Server};Server=dev;Database=test1")
data = pd.read_sql_query(
"""
SELECT *
FROM sys.tables
"""
, con = conn)
print data
data.to_sql('test', con = conn)
错误如下:
sql 'SELECT name FROM sqlite_master WHERE 执行失败 type='table' AND name=?;': ('42S02', "[42S02] [Microsoft][ODBC SQL 服务器驱动程序][SQL Server]无效的对象名称“sqlite_master”。 (208) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server 驱动程序][SQL 服务器]无法准备语句。 (8180)")
有办法绕过去吗?
【问题讨论】:
-
test表是否存在于dbo模式的数据库中?如果不使用if_exists 参数替换/追加。默认为失败。 -
@Parfait 我使用了替换选项,它给出了同样的错误。
-
pandas
to_sql不支持直接连接MS SQL Server,需要使用sqlalchemy连接如@Parfait的回答所示
标签: python sql sql-server pandas