簡體   English   中英

如何在 python 的數據庫中存儲文件名?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM