如何使用預準備語句在Python/Django中的SQlite中插入MULTIPLE記錄?如何使用預準備語句在Python/Django中的SQlite中插入MULTIPLE記錄?
22
A
回答
31
http://docs.python.org/library/sqlite3.html#cursor-objects
Python的SQLite的庫不準備發言的對象,但他們允許你使用參數化查詢,並提供一組以上的參數。
編輯:根據請求的executemany
一個例子:
values_to_insert = [(1,"foo"), (2, "bar"), (3, "baz")]
cursor.executemany("""
INSERT INTO some_table ('item_num', 'item_name')
VALUES (?, ?)""", values_to_insert)
5
可以使用executemany(),並通過一個迭代器對象,例如插入100個整數和它們的平方:
def my_iter(x):
for i in range(x):
yield i, i*i
cursor.executemany("INSERT INTO my_table VALUES (?, ?)", my_iter(100))
-3
如果你想只插入一行與一個PreparedStatement,
cursor.execute("""INSERT INTO table_name ('column1', 'column2') VALUES (?, ?)""", ("value1", "value2"))
應該正常工作。值被作爲python元組傳遞。
+1
OP詢問插入多個記錄/行,而不是單行,所以我不明白這是如何回答這個問題。 – Moot 2017-03-02 01:50:16
相關問題
- 1. 在現有記錄中插入值。使用準備好的語句的sqlite
- 2. 如何在Android中的SQlite中使用預準備語句?
- 3. 在BoneCP中使用預準備語句
- 4. 在SQLite中使用預準備語句和全文搜索
- 5. Sqlite插入語句不會在表中放入記錄
- 6. 在mysqli->使用插入語句準備中的錯誤
- 7. 如何使用預準備語句防止C語言中的SQL注入?
- 8. pg_prepare:不能將多個命令插入預準備語句中
- 9. PHP-使用預準備語句在mysql中插入二進制數據
- 10. 在SQL中使用IN函數中的預準備語句
- 11. 如何從mysql中使用預準備語句獲取多行
- 12. ios - sqlite準備語句
- 13. SQLite3中的「預先準備好」語句?
- 14. 用準備語句插入CURRENT_TIMESTAMP
- 15. 無法在jdbc預準備語句中的外鍵表中插入數據
- 16. 插入語句中的記錄數(Oracle)
- 17. 如何在iPhone中爲SQLite編寫準備好的語句
- 18. 如何在QSqlQuery中重用預準備語句?
- 19. 用PDO準備好的語句在MySQL中插入空變量
- 20. 如何在PHP中使用預準備語句在多個表中插入數據?
- 21. MySQLi準備的插入語句失敗
- 22. mysql準備的語句插入問題
- 23. PHP MySQLInsert預準備語句
- 24. 使用準備好的語句時的預定義語句
- 25. 如何在隨後的MULTIPLE插入語句中使用mysql_insert_id中的最新插入值(在PHP和MYSQL中)?
- 26. 插入沒有預準備語句的時間戳
- 27. 如何存儲SQLite準備好的語句供以後使用?
- 28. 使用準備好的語句插入GIS幾何
- 29. PHP在準備好的語句中準備了語句
- 30. 在準備語句中使用row_number
@Amber:謝謝你的回答。我錯過了一個重要的點,即它插入了多條記錄。「execute()」只允許執行一個查詢。所以對我來說不起作用:) – 2011-04-11 05:15:32
@mahendraliya這就是爲什麼'.executemany()'存在:http://docs.python.org/library/sqlite3.html#sqlite3.Cursor.executemany – Amber 2011-04-11 05:19:51
@Amber:我也經歷了executemany(),但很遺憾地說我對python和sqlite都很陌生。我的疑問是,如果我有,說一個列表文件名,我已經準備通過追加列表對象內的值,那麼我怎麼能用它與executeMany ..就像簡單地傳遞列表對象(比如fileList)executemany( )?..任何代碼片段將非常感激..謝謝。 – 2011-04-11 05:30:40