2012-02-01 56 views
0

我有我正努力找出解決方案使用案例實施,實施如下:如何在運行時使用SQLAlchemy執行用戶定義的SQL查詢?

  • 用戶定義的SQL服務器連接參數,如DATABASE_TYPE(如MySQL,pgsql的,SQLite的或任何數據庫支持通過SQLAlchemy的),主機,端口SCHEMA_NAME,user_name和password
  • 用戶然後做測試連接以驗證所提供的連接參數,並提供成功或失敗反饋
  • 成功時,用戶將在SQL查詢中輸入內容(以下SQLAlchemy的SQL表達式語言更多詳細信息here)需要執行哪個編輯。

如果上面是用戶在運行時定義的所有參數的SQLAlchemy工作的通知,我想實現消耗上述連接參數和SQL查詢在Python的功能,執行成功的連接查詢和返回查詢結果。任何關於這方面的指導或幫助都很好。

感謝

+0

爲什麼不直接在'>>>'Python提示符下執行此操作?如果一切都只是訪問SQLAlchemy,爲什麼要編寫任何額外的代碼? – 2012-02-01 13:26:34

+0

@ S.Lott那麼用戶通過Web表單提交連接參數和sql查詢(作爲一個字符串),並且使用SQLAlchemy來抽象查詢格式。 – 2012-02-01 13:33:23

+0

爲什麼有這樣的網絡表單?它似乎並不像網頁表格真的在做任何有用的工作? – 2012-02-01 14:00:34

回答

1

我有這樣的事情作爲一個更大的項目的一部分,至今只限於SQLite和Postgres但是這可以被推廣。

如果您希望用戶知道DATABASE_TYPE(如MySQL,pgsql,sqlite或SQLAlchemy支持的任何數據庫),HOST,PORT,SCHEMA_NAME,USER_NAME和PASSWORD,則可以請求DB URL來使您的生活更容易一點。

之後可以測試由連接:

from sqlalchemy import create_engine 
    try: 
     engine = create_engine(url)   
     connection = engine.connect() 
     connection.close() 
    except Exception, e: 
     LOGGER.exception(e) 
     raise MyCusomException('Could not initialize db. Invalid URL.') 

Cusom SQL查詢可以使用文本來執行()構建如圖here

+0

感謝@Bogdan的方向,它確實解決了我的問題。再次感謝。 – 2012-02-01 16:01:34

+0

@Bodgan想要檢查是否可以幫助指導如何將動態查詢序列化序列化爲JSON或pickle?謝謝。 – 2012-02-01 16:09:05

+0

我不確定我完全理解你正在嘗試做什麼。也許你可以嘗試在這個問題上提出另一個問題,例如你想要什麼/嘗試過什麼,如果可能,我會盡力幫忙。 – Bogdan 2012-02-01 16:12:13