【问题标题】:sqlalchemy no specified driver, however driver is specifiedsqlalchemy 没有指定驱动程序,但是指定了驱动程序
【发布时间】:2016-04-17 10:02:53
【问题描述】:

根据这个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)')

【问题讨论】:

    标签: python sql-server sqlalchemy pyodbc


    【解决方案1】:

    这是一个连接到现有 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)
    

    【讨论】:

    • 实际上在这种情况下它是一个查询字符串。我会更新它以解决这个问题。
    • 您的 mssql 服务器需要什么样的身份验证?对于基于 Windows 的身份验证,我使用了以下字符串。 engine = create_engine("mssql+pyodbc://@{SERVER}/{DATABASE}?driver=SQL+Server+Native+Client+10.0?trusted_connection=yes")
    • Windows 身份验证。这是一个分析数据库。
    • 如果您在服务器名称之前添加 ?trusted_connection=yes 和 @ ,它现在可以工作了吗?
    • 我用一个例子更新了我的答案。希望这将帮助您使其正常工作。
    猜你喜欢
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 2018-04-21
    • 2013-07-05
    相关资源
    最近更新 更多