JOH*_*OHN 1 python sql sql-server pandas
我得到以下代码。问题是我可以使用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)
Run Code Online (Sandbox Code Playgroud)
错误如下:
在SQL'SELECT name FROM sqlite_master WHERE type ='table'AND name = ?;'上执行失败:('42S02',“ [42S02] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]无效的对象名'sqlite_master' 。(208)(SQLExecDirectW); [42000] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]声明无法准备。(8180)“)
有办法解决吗?
考虑创建一个sqlalchemy MSSQL引擎,并在pandas to_sql()con参数中使用该引擎:
import sqlalchemy
...
engine = sqlalchemy.create_engine(
"mssql+pyodbc://user:pwd@server/database",
echo=False)
data.to_sql('test', con=engine, if_exists='replace')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5868 次 |
| 最近记录: |