我想我會嘗試讓我的sqlite數據庫連接的功能,而不是複製/粘貼連接和執行查詢所需的〜6行。 我想使它多才多藝,所以我可以使用相同的功能創建/選擇/插入/等...我可以將我的sqlite連接和遊標放在函數中嗎?
以下是我所嘗試過的。 'INSERT'和'CREATE TABLE'查詢正在工作,但是如果我做了'SELECT'查詢,我該如何處理它在函數外部獲取的值?
通常我想打印它提取的值,也可以用它們做其他事情。
當我不喜歡它下面我得到一個錯誤
Traceback (most recent call last):
File "C:\Users\steini\Desktop\py\database\test3.py", line 15, in <module>
for row in connection('testdb45.db', "select * from users"):
ProgrammingError: Cannot operate on a closed database.
所以我猜這個連接必須是開放的,所以我可以從遊標的值,但我需要關閉它,該文件ISN永遠不會鎖定。
這裏是我的測試代碼:
import sqlite3
def connection (db, arg, cubby):
conn = sqlite3.connect(db)
conn.execute('pragma foreign_keys = on')
cur = conn.cursor()
cur.execute(arg)
for row in cur:
cubby.append(row)
conn.commit()
conn.close()
cubby=[]
connection('testdb.db', "create table users ('user', 'email')", cubby)
connection('testdb.db', "insert into users ('user', 'email') values ('joey', '[email protected]')", cubby)
for row in connection('testdb45.db', "select * from users", cubby):
print row
我怎樣才能使這項工作?
編輯:修改了代碼,那麼一點點的CUR值,所以它附加到外部列表中,但仍然很糟糕
真棒,我將不得不再次混淆它,但到目前爲止,這個類似乎對我所做的完美工作。謝謝 – 2011-01-06 01:26:13
Minor nit,但你需要:在第二個代碼塊中的for語句後:) – 2017-04-29 14:21:25