2016-11-10 4 views
1

이 내가 가진 그 코드없는 데이터 소스 이름과 기본 드라이버 오류

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:[email protected]: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도 방문했다. 오류를 이해할 수 없습니다. 여기

+0

DSN에 데이터베이스 이름이 필요하지 않습니까? 서버, 사용자 이름 및 암호가 있지만 데이터베이스 이름이 없습니다 ... – larsks

+0

@larks 미안 해요. 코드를 편집했습니다. 내가 시도한 다른 방법을 주석으로 달아 보면 데이터베이스 이름이 있습니다. 두 문장 모두에서 같은 매개 변수를 사용했습니다. 어떤 이유로 든 작동하지 않습니다. –

답변

1

내가 무슨 짓을 :

나는 ODBC 관리에 가서 새로운 DSN을 생성하고 연결하는 것을 사용했다.

드라이버에 대해 언급 할 필요가 없습니다. 한 서버에 여러 데이터베이스가있는 경우 DSN을 구성하는 동안 기본 데이터베이스를 지정할 수 있습니다. 이것은 나를 위해 일했다.