sql-server – 在使用带有pandas和sqlalchemy的python 3.5时,尝试从csv文件在SQL Server 2016中创建新数据库表时出错

前端之家收集整理的这篇文章主要介绍了sql-server – 在使用带有pandas和sqlalchemy的python 3.5时,尝试从csv文件在SQL Server 2016中创建新数据库表时出错前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问题

我正在尝试使用python来读取我的csv文件并将其作为新表放入Microsoft sql Server 2016.简单地说,我不想在sql上创建一个表并导入csv,我想在python中编写一个脚本,可以读取csv并为我在sql中创建一个新表.

UPDATE

我可能不得不重新考虑我的做法.我更正了驱动程序,但是我从to_sql收到以下错误.我认为我的身份验证方案有问题.遗憾的是,to_sql文档和sql_alchemy没有太多关联.开始考虑替代方案.

sqlalchemy.exc.DBAPIError was unhandled by user code
Message: (pyodbc.Error) ('08001','[08001] [Microsoft][sql Server Native Client 11.0]Named Pipes Provider: Could not open a connection to sql Server [53].  (53) (sqlDriverConnect)')

import pandas as pd 
import sqlalchemy

#Read the file 
data = pd.read_csv(file.csv)

#Connect to database and write the table 
 server = "DERPSERVER"
 database = "HERPDB"
 username = "DBUser" 
 password = "password"
 tablename = "HerpDerpTable"
 driver = "sql+Server+Native+Client+11.0" 

 #Connect to sql using sql Server Driver 
 print("Connect to sql Server")
 cnxn = sqlalchemy.create_engine("mssql+pyodbc://"+username+":"+password+"@"+server +"/"+database + "?driver="+driver)

UPDATE

我重写了字符串如下,但它不起作用:

sqlalchemy.create_engine('mssql+pymssql://'+username+':'+ password + '@' + server + '/' + database + '/?charset=utf8')


data.to_sql(tablename,cnxn);

尝试

这些是我的方法中需要注意的一些重要事项.请特别注意我在下面分享的第二个要点.我认为我的create_engine的连接字符串在某种程度上或者可能是错误的,但不知道出了什么问题,因为我遵循了文档.

>我相信我处于无DSN的情况.因此,试图通过文档描述的其他方式进行连接.
>我使用这个link来帮助我在create_engine中创建连接字符串部分.
>我试过to_sql写入数据库,但认为我的连接字符串可能仍然搞砸了?我在stackoverflow上咨询了这个question.
>更新我添加了作为MaxU的驱动程序规范和指定的sqlalchemy文档.但是,我收到一条错误,说我找不到我的数据源名称,并且没有使用to_sql指定默认驱动程序.我是否还需要为驱动程序提供to_sql?如果是这样,文档或示例代码在哪里显示我出错的地方?

由于未来的目标和需求,我正在努力学习python并将其用作脚本语言.我将不胜感激任何协助,帮助,指导.

解决方法

您应该明确指定MS sql Server驱动程序 if you use SQLAlchemy version 1.0.0+

例:

engine = create_engine("mssql+pyodbc://scott:tiger@myhost:port/databasename?driver=sql+Server+Native+Client+10.0")

Changed in version 1.0.0: Hostname-based PyODBC connections now require the sql Server driver name specified explicitly. sqlAlchemy
cannot choose an optimal default here as it varies based on platform
and installed drivers.

List of Native SQL Server Client Names

> sql Server 2005:

sql Server Native Client

> sql Server 2008:

sql Server Native Client 10.0

> sql Server 2016:

sql Server Native Client 11.0

或者你可以使用pymssql

engine = create_engine('mssql+pymssql://<username>:<password>@<freetds_name>/?charset=utf8')

猜你在找的MsSQL相关文章