Python sqlalchemy正在尝试使用.to-sq将pandas数据帧写入SQL服务器

2024-04-19 16:29:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python代码,通过它我得到一个pandas数据框“df”。我正在尝试将此数据帧写入Microsoft SQL server。我试图通过以下代码连接,但收到错误

import pyodbc
from sqlalchemy import create_engine

engine = create_engine('mssql+pyodbc:///?odbc_connect=DRIVER={SQL Server};SERVER=bidept;DATABASE=BIDB;UID=sdcc\neils;PWD=neil!pass')
engine.connect()
df.to_sql(name='[BIDB].[dbo].[Test]',con=engine, if_exists='append')

但是在engine.connect()行中,我得到以下错误

sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('08001', '[08001] [Microsoft][ODBC SQL Server Driver]Neither DSN nor SERVER keyword supplied (0) (SQLDriverConnect)')

有人能告诉我我缺了什么吗。我正在使用Microsoft SQL Server Management Studio-14.0.17177.0

我通过以下方式连接到SQL server

Server type: Database Engine
Server name: bidept
Authentication: Windows Authentication

for which I log into my windows using username : sdcc\neils
and password : neil!pass

我是数据库和python的新手。如果你需要更多的细节,请告诉我。任何帮助都将不胜感激。提前谢谢你。


Tags: 数据代码importdfsqlserversqlalchemyconnect
1条回答
网友
1楼 · 发布于 2024-04-19 16:29:07

我终于成功了。

import pyodbc
from sqlalchemy import create_engine
import urllib

params = urllib.quote_plus(r'DRIVER={SQL Server};SERVER=bidept;DATABASE=BIDB;Trusted_Connection=yes')
### For python 3.5: urllib.parse.quote_plus 
conn_str = 'mssql+pyodbc:///?odbc_connect={}'.format(params)
engine = create_engine(conn_str)
reload(sys)
sys.setdefaultencoding('utf8')

df.to_sql(name='Test',con=engine, if_exists='append',index=False)

感谢回答Here的@gord thompson

尽管我在我的sql server中,所有表都在“dbo”模式下(即dbo.Test1、dbo.Other_表),此查询将我的表放入“sdcc\neils”模式(即sdcc\neils.Test1、sdcc\neils.Other_表)对此有何解决方案?

相关问题 更多 >