sqlalchemy没有指定驱动程序,但指定了驱动程序

时间:2016-01-12 17:01:31

标签: 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)')

1 个答案:

答案 0 :(得分:2)

以下是使用名为TableA的表连接到现有MS SQL数据库的示例,其中包含两个参数name和description。我还添加了一个如何创建查询并获取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)