如何编写pandas.DataFrame的connection_object以在sql中创建表

时间:2018-11-05 16:33:53

标签: python pandas dataframe pyodbc pandas-to-sql

我试图将csv文件(由40个标头和4000行组成)转换为sql数据库服务器中的表。我读过一个地方,我可以做到两行就这么简单:

df = pandas.read_csv("file.csv")
df.to_sql(tableName, conn)

我试图按照以下方法制作conn:

conn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server}; SERVER=servername; DATABASE=testdb; Trusted_Connection=yes')

但是失败了,我得到了这些错误:

  

DatabaseError:在SQL'SELECT name FROM sqlite_master WHERE type ='table'AND name = ?;'中执行失败:('42S02',“ [42S02] [Microsoft] [用于SQL Server的ODBC驱动程序13] [SQL Server ]无效的对象名称“ sqlite_master”。(208)(SQLExecDirectW); [42S02] [Microsoft] [用于SQL Server的ODBC驱动程序13] [SQL Server]语句无法准备。(8180)“)

显然,我没有正确定义conn。但是我不知道如何纠正它。

1 个答案:

答案 0 :(得分:0)

DataFrame.to_sql documentation中所述,第二个参数(con)是“ sqlalchemy.engine.Engine或sqlite3.Connection”:

  

使用SQLAlchemy可以使用该库支持的任何数据库。为sqlite3.Connection对象提供了旧版支持。

因此,您需要将SQLAlchemy添加到项目中,使用其create_engine方法创建指向您数据库的引擎对象,例如,

from sqlalchemy import create_engine
# ...
your_sql_engine = create_engine('mssql+pyodbc://@your_DSN_name')

,然后将your_sql_engine作为第二个参数传递给熊猫的to_sql方法。