[英]How do I store file names in a database in python?
我正在嘗試獲取要保存到數據庫的用戶指定目錄中的文件列表。 我目前擁有的是:
import os
import sqlite3
def get_list():
folder = input("Directory to scan : ")
results = []
for path in os.listdir(folder):
if os.path.isfile(os.path.join(folder, path)):
results.append(path)
print(results)
return results
def populate(results):
connection = sqlite3.connect("videos.db")
with connection:
connection.execute("CREATE TABLE IF NOT EXISTS files (id INTEGER PRIMARY KEY, file_name TEXT);")
for filename in results:
insert_string = "INSERT INTO files (file_name) VALUES ('"+filename+"');"
connection.execute(insert_string)
filelist = get_list()
populate(filelist)
它運行沒有問題並打印出文件名列表,這很好,但是當它運行 INSERT SQL 語句時,這似乎對數據庫表沒有影響。 我試過調試它,保存在變量中的語句看起來不錯,在控制台中手動執行時,它會在表中插入一行,但運行時沒有任何變化。 我在這里錯過了一些非常簡單的東西嗎?
Python 的 SQLite3 模塊默認不會自動提交,因此您需要在執行完查詢后調用connection.commit()
。 本教程中對此進行了介紹。
此外,使用?
避免 SQL 注入問題的占位符:
cur.execute('INSERT INTO files (file_name) VALUES (?)', (filename,))
完成此操作后,您可以使用executemany
一次插入所有文件名:
cur.executemany(
'INSERT INTO files (file_name) VALUES (?)',
[(filename,) for filename in results],
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.