Raf*_*mas 3 python sqlalchemy pyodbc pandas pandas-to-sql
我正在尝试将 pyodbc 连接切换到 sqlalchemy。工作的 pyodbc 连接是:
import pyodbc
con = 'DRIVER={ODBC Driver 11 for SQL Server};SERVER=server.com\pro;DATABASE=DBase;Trusted_Connection=yes'
cnxn = pyodbc.connect(con)
cursor = cnxn.cursor()
query = "Select * from table"
cursor.execute(query)
Run Code Online (Sandbox Code Playgroud)
我试过:
from sqlalchemy import create_engine
dns = 'mssql+pyodbc://server.com\pro/DBase?driver=SQL+Server'
engine = create_engine(dns)
engine.execute('Select * from table').fetchall()
Run Code Online (Sandbox Code Playgroud)
基于: http: //docs.sqlalchemy.org/en/latest/core/engines.html
并且:使用 SQLAlchemy 时 pandas.read_sql() 比 pyodbc 慢得多
(尝试使用 Trusted_Connection = Yes 建立连接)
但我收到消息:
操作错误:(pyodbc.OperationalError) ('08001','[08001] [Microsoft][ODBC SQL Server 驱动程序][DBNETLIB]不存在 SQL Server 服务,无法访问。 (17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).(53)') (此错误的背景位于: http: //sqlalche.me/e/e3q8)(抱歉西班牙语,但它说 SQL Server 不存在)
我几乎可以肯定,这与我不了解发动机连接的语法有关。有人可以详细解释一下如何将连接从 pyodbc 转换为 sqlalchemy 吗?
提前致谢!
PD:我正在尝试实现 sqlalchemy 以便稍后在我的代码中使用pandas.DataFrame.to_sql(engine)
小智 5
我记得在设置 sqlalchemy 时遇到过类似的问题。我已附上我的引擎语句语法。我不记得细节,但我确实记得驱动程序的选择是一个真正的痛点。我相信我必须单独下载 ODBC 13 驱动程序,但可以确认 pd.read_sql() 和 df.to_sql 现在工作得很好。
driver = 'ODBC+DRIVER+13+for+SQL+Server'
engine_stmt = ("mssql+pyodbc://%s:%s@%s/%s?driver=%s" % (username, password, server, database, driver )
engine = sqlalchemy.create_engine(engine_stmt)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13775 次 |
| 最近记录: |