【问题标题】:Data source name not found and no default driver error未找到数据源名称且无默认驱动程序错误
【发布时间】:2016-11-11 08:20:53
【问题描述】:

这是我的代码

import time
import urllib
import openpyxl
from sqlalchemy import create_engine, Column, Integer, String, text, Float
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from astropy.table.tests.test_index import engine
from _sqlite3 import connect


connection_string = "DRIVER = {SQL Server};DATABASE =<dbname>; SERVER=<details>; UID =uid; PWD =pwd"
connection_string = urllib.parse.quote_plus(connection_string)
connection_string = "mssql+pyodbc:///?odbc_connect=%s" %connection_string

#engine = create_engine('mssql+pyodbc://UID:PWD@Servername:1433/DBname')

engine = create_engine(connection_string)

Base = declarative_base()

class Blc(Base):
    __tablename__ = 'BLC_Database'

    Row_no = Column(Integer, primary_key = True)
    date = Column(String)
    RES = Column(String)
    BTTLCOLUMN = Column(String)
    CS_HR = Column(Float)

    def __repr__(self):
        return "<BLC_Databse(Row_no = '%d', date='%s', RES = '%s', BTTLCOLUMN = '%s', CS_HR = '%0.2f')>" %(self.Row_no, self.date, self.RES, self.BTTLCOLUMN, self.CS_HR)    

Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()

print('Connection Successful')

我得到的错误如下:

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

我正在尝试连接到 SQL 服务器。我尝试了不同的字符串选项。我也访问了这个link。我无法理解错误。

【问题讨论】:

  • 您的 DSN 不需要数据库名称吗?您有服务器、用户名和密码,但没有数据库名称...
  • @larks 对不起,我错过了!我已经编辑了代码。如果您注意到我尝试的另一种方法已被注释,它具有数据库名称。我在两个语句中使用了相同的参数。由于某种原因仍然无法正常工作。

标签: python sqlalchemy pyodbc


【解决方案1】:

这是我所做的:

我去了 ODBC 管理并创建了一个新的 DSN 并用它来连接。

create_engine('mssql+pyodbc://UID:PWD@DSN')

您无需提及驱动程序。如果您在一台服务器中有多个数据库,则可以在配置 DSN 时分配默认数据库。这对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-08
    • 2014-12-05
    • 1970-01-01
    • 2019-08-17
    • 2013-07-24
    相关资源
    最近更新 更多