問題:SQLAlchemy/Python/Pyramid寫入數據庫問題
我正在處理一些代碼,這是爲了在鏈接表中創建新記錄。鏈接表的主鍵是一個自動編號,其他兩個字段是VARCHAR,長度爲10.
我遇到的問題是我似乎無法將partID獲取到表中。如果你看看sql的輸出結果,你可以清楚地看到它將None和u'1'(orderID)寫入表格。所以這告訴我它收到orderID就好了。你也可以看到我做了一個打印,以便在將它傳遞給新對象之前找出變量內部的內容。它有3個,它是正確的partId。在創建新對象和寫入表之間的某個位置會傳遞一個空值。
我試過去施放它,我嘗試過從數據庫中拉出partID的不同方法等等,我不能爲我的生活弄清楚什麼是錯的。
代碼:
def updateOrderParts_view(request):
part = None
partToOrder = None
idnum = None
part = DBSession.execute(\
"SELECT partID "+\
"FROM tblParts "+\
"WHERE partName = " + "'" +request.POST['partName'] +"'").fetchone()
print "<---DEBUG--->"
print part['partID']
partToOrder = PartsByOrder(part['partID'], request.POST['orderID'])
DBSession.add(partToOrder)
return{}
端子輸出:
<---DEBUG--->
3
2013-04-24 08:14:47,985 INFO [sqlalchemy.engine.base.Engine][Dummy-2] INSERT INTO "tblPartsByOrder" ("partID", "orderID") VALUES (?, ?)
2013-04-24 08:14:47,985 INFO [sqlalchemy.engine.base.Engine][Dummy-2] (None, u'1')
2013-04-24 08:14:47,986 INFO [sqlalchemy.engine.base.Engine][Dummy-2] COMMIT
我希望在這個問題上有什麼想法或意見
感謝您的時間
請永遠不要手動構建SQL查詢,尤其是從用戶輸入中獲取的位。您的代碼易受SQL注入攻擊。始終使用綁定參數:http://docs.sqlalchemy.org/en/latest/core/expression_api.html?#sqlalchemy.sql.expression.text – Sergey 2013-04-25 19:46:50