2011-04-11 17 views

回答

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) 
+0

@Amber:謝謝你的回答。我錯過了一個重要的點,即它插入了多條記錄。「execute()」只允許執行一個查詢。所以對我來說不起作用:) – 2011-04-11 05:15:32

+2

@mahendraliya這就是爲什麼'.executemany()'存在:http://docs.python.org/library/sqlite3.html#sqlite3.Cursor.executemany – Amber 2011-04-11 05:19:51

+0

@Amber:我也經歷了executemany(),但很遺憾地說我對python和sqlite都很陌生。我的疑問是,如果我有,說一個列表文件名,我已經準備通過追加列表對象內的值,那麼我怎麼能用它與executeMany ..就像簡單地傳遞列表對象(比如fileList)executemany( )?..任何代碼片段將非常感激..謝謝。 – 2011-04-11 05:30:40

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

相關問題