2011-07-10 38 views
4

我們正在嘗試設置一個Pyramid項目,該項目將使用MySQL而不是SQLAlchemy。設置金字塔使用MySQL原始代替SQLAlchemy

我對金字塔/ Python的使用經驗有限,所以我希望能夠在網上找到指南。不幸的是,我一直無法找到任何東西來推動我們走向正確的方向。大多數搜索結果是針對試圖在SQLAlchemy中使用原始SQL/MySQL命令的人(許多人重新發布鏈接)。

任何人都有一個有用的教程呢?

+1

我假設「原始」 SQL至少使用DB意味着-API兼容庫,應該處理適當的參數替換AFAIK。 –

+0

馬克是正確的,你仍然可以使用原始SQL執行和SQLAlchemy將正確處理參數替換,並防止SQL注入。即data = con.execute(「從表中選擇ID,其中名稱=%(客戶端名稱)s」,客戶端名稱= somevalue) – webjunkie

+0

實際上,我所說的是,您應該能夠正確引用參數替換工作,而無需對於SQLAlchemy,只需使用符合DB-API的MySQLdb庫。我沒有使用這個庫,但我認爲它可以完成其他DB-API庫的功能,其中包括正確的參數替換。 –

回答

10

金字塔在它的基礎上並不認爲你會使用任何一個特定的庫來幫助你的持久性。爲了使事情變得簡單,那麼對於那些希望使用SQLALchemy等庫的人來說,金字塔庫包含Scaffolding,它基本上是一些基本站點的自動生成的代碼,並且還增加了一些用於設置SQLAlchemy或一個特定的路由策略。金字塔文檔應該能夠lead you through creating a new project using the "pyramid_starter" scaffolding,它設置沒有SQLAlchemy的基本站點。

這將爲您提供設置視圖所需的基礎知識,但接下來您需要添加代碼以允許您連接到數據庫。幸運的是,由於您的網站只是python代碼,因此學習如何在金字塔中使用MySQL只需learning how to use MySQL in Python,然後在您的金字塔項目中執行完全相同的步驟。

請記住,即使您更願意使用原始SQL查詢,您仍然可以在SQLAlchemy中找到一些有用的東西。在基本級別上,SQLAlchemy只是簡單地包裝了DBAPI調用,並添加了連接池等有用的功能。 ORM功能實際上是對較低級別的SQLAlchemy工具集的一大補充。

4

Quick Tutorial顯示使用SQL但不使用SQLAlchemy的Pyramid應用程序。它使用SQLite,但應該相當容易地適應MySQL。

5

sqlalchemy不會假設您將使用它的orm。如果你想使用普通的sql,你可以這樣做,只不過是sqlalchemy已經提供的。舉例來說,如果你跟着recipe in the cookbook,你將有機會獲得SQLAlchemy的會話對象爲request.db,你的處理程序將是這個樣子:

def someHandler(request): 
    rows = request.db.execute("SELECT * FROM foo").fetchall()