[英]web2py insert with variable table and field name e.g. with dict
有沒有一種在運行時處理表名和字段名的方法?
我已經找到了以dict作為參數的insert方法的引用,但是假設rd是一個有10個條目的dict,key =字段名稱,value =要插入的值,以下代碼將失敗
db.OrdersFull.insert(rd)
出現錯誤:TypeError:insert()恰好接受1個參數(給定2個)
1)有什么線索嗎?
2)使用此解決方案,必須在開發時仍然知道表名(OrdersFull),以任何方式插入到僅在運行時知道其名稱的表中?
3)是否可以找到有關可用的web2py API調用的參考信息的地方?
要訪問基於產生其名稱的Python表達式的表,您可以執行以下操作:
tablename = 'mytable'
db[tablename]
這在此處記錄 。
要將字典與.insert()
方法一起使用,可以使用標准的Python關鍵字參數解壓縮:
db[tablename].insert(**mydict)
這不是特定於web2py或DAL,而是標准的Python語法。
您還可以使用一種特殊的方法來過濾字典中不是表中字段的任何項目:
db.mytable.insert(**db.mytable._filter_fields(mydict))
如果要傳遞以前從表中選擇的記錄,則上面的命令很有用,因為它將自動從記錄中過濾出id
字段(您不想在插入時指定id
,因為一個id
由該字段自動創建數據庫)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.