python - sqlalchemy 没有指定的驱动程序,但是指定了驱动程序

标签 python sql-server sqlalchemy pyodbc

根据这个link , sqlalchemy 现在需要指定一个驱动程序。我已经根据示例这样做了,但它仍然说我没有。我正在使用 Windows 身份验证。

import sqlalchemy
import pyodbc
engine = sqlalchemy.create_engine('mssql+pyodbc://{SERVER}/{DATABASENAME}?driver=SQL+Server+Native+Client+10.0')

这当然有效。但是,当您尝试使用 pandas 中的连接执行以下操作时:

df = pandas.read_sql(sql=query_string, con=engine)

它生成一个DBAPIError:

DBAPIError: (pyodbc.Error) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

最佳答案

这是一个连接到现有 MS SQL 数据库的示例,该数据库包含一个名为 TableA 的表,其中包含两个参数名称和描述。我还添加了一个示例,说明如何创建查询并取回 pandas 数据框。

from sqlalchemy import create_engine, MetaData, Column, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
import pandas as pd
engine = create_engine("mssql+pyodbc://@{SERVER}/{database}?driver=SQL+Server+Native+Client+10.0?trusted_connection=yes")
metadata = MetaData()
Base = declarative_base(metadata=metadata)


class TableA(Base):
    __tablename__ = 'tableA'
    name = Column('name', String, primary_key=True)
    desc = Column('description', String)


Session = sessionmaker()
Session.configure(bind=engine)
session = Session()

q = session.query(TableA)

df = pd.read_sql(q.statement, q.session.bind)

关于python - sqlalchemy 没有指定的驱动程序,但是指定了驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34749601/

相关文章:

python - @staticmethod 和 @property

python - 在现有目录中创建 virtualenv 而不创建 "local"目录

sql-server - 为什么 equal 运算符和 like 运算符之间的相等比较存在差异?

sql - 获取绑定(bind)在日历和组合框视频上的列表框

python - 设置数据库的添加、删除和更改日志

postgresql - sqlalchemy/postgresql : get database 'as-of' timestamp of a query

Python:Pandas 使用 .describe() 版本大于 0.20 的切片

python - 用字符串替换列表元素中的列表元素

sql - MSSQL 更新查询将结果显示到网格

python - Microsoft Azure 数据仓库和 SqlAlchemy