问题
我正在尝试使用Python读取我的CSV文件,并将其作为新表插入到Microsoft SQL Server 2016中。简单来说,我不想在SQL上创建表并导入CSV,我想编写一个Python脚本,它可以读取CSV并为我创建一个新的SQL表。
更新
我可能需要重新考虑我的方法。我已经更正了驱动程序,但是从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)
更新
我将字符串重写如下,但它不起作用:
sqlalchemy.create_engine('mssql+pymssql://'+username+':'+ password + '@' + server + '/' + database + '/?charset=utf8')
data.to_sql(tablename, cnxn);
尝试
以下是我处理此问题的一些重要事项。请特别注意下面我分享的第二个要点。我认为我的 create_engine
连接字符串可能有误,但不知道错在哪里,因为我按照文档进行操作。
- 我认为我处于无DSN的情况中。因此,我试图通过文档中描述的其他方式进行连接。
- 我使用此链接来帮助我创建 create_engine 中的连接字符串部分。
- 我尝试使用
to_sql
将数据写入数据库,但我认为我的连接字符串仍然可能出错了?我参考了stackoverflow上的问题。 - 更新 我添加了MaxU指定的驱动程序规范,就像SQLAlchemy文档规定的那样。然而,我收到了一个错误消息,说找不到我的数据源名称,并且没有默认驱动程序与
to_sql
指定。我需要向to_sql
提供驱动程序吗?如果是,请问文档或示例代码在哪里,以便我了解我做错了什么?
我正在努力学习Python,并将其用作脚本语言,因为有未来的目标和需求。我会感激任何提供帮助、协助或指导的人。