2013-09-25 88 views
0

好的,這裏是我的用例。我必須連接到不同類型的數據庫(MSSQL,oracl,MYSQL等)。我有每個這些數據庫的.sql文件。因爲sqlalchemy似乎無法運行.sql文件,所以我們需要通過連接從.sql文件中逐一打開並執行這些語句。使用實例名稱連接到MSSQL的SQLAlchemy

所以大家好,我有這個信息,我想用SQL鍊金術連接。

<db type="MSSQL" version="2005" patch_level="SP2" port="1433" id="MSSQLSERVER"/> 

這裏MSSQLServer是實例。沒有提供數據庫信息。所以我需要數據庫名稱來連接到數據庫?

這是我的命令

engine = create_engine('mssql+pyodbc://sa:[email protected]/MSSQLSERVER', echo=True) 

這是我的完整代碼

from sqlalchemy.engine import create_engine 
engine = create_engine('mssql+pyodbc://sa:[email protected]', echo=False) 
connection = engine.connect() 
connection.execute(
    """ 
    select @@version 
    """ 
) 
connection.close() 

回答

0

你並不需要一個數據庫名,你可以使用這個功能我寫道: (它爲我工作在mySQL上)

def ConnectToDB(self, server, uid, password): 
     """ 
     this method if for connecting to a db 
     @param server: server name 
     @param uid: username 
     @param password: password 
     """ 

     connection_string = 'mysql://{}:{}@{}'.format(uid, password, server) 

     try: 
      self.engine = create_engine(connection_string) 
      self.connection = self.engine.connect() 
     except exc.SQLAlchemyError, e: 
      self.engine = None 
      return False, e 

     return True, None 

在你的SQL語句中你會說DB和表有些東西像這樣:

INSERT INTO `dbName`.`dbTable`......... 
+0

我編輯了我的問題,給出了一些關於我在這裏試圖完成的背景。 – Hemant

+0

我試過沒有實例名稱。它似乎不適用於MSSQL。我收到以下錯誤 - sqlalchemy.exc.DBAPIError:(錯誤)('IM002','[IM002] [Microsoft] [ODBC Driver Manager]未找到數據源名稱並且沒有指定默認驅動程序(0)(SQLDriverConnect) ')None None – Hemant

+0

你是否這樣運行你的sql語句:self.connection.execute(SQLStatment)PS你寫的錯誤是在連接上還是當你試圖發送語句? –