簡體   English   中英

Python sqlite3保存數據

[英]Python sqlite3 saving data

有誰知道我該如何糾正此錯誤,因為此代碼未將數據保存在數據庫中?

def save():

    #FUNCTIONS

    def savenow():
        params = [i.get(), n.get(), p.get(), r.get(), t.get(), a.get(), "None", "None"]

        if not os.path.exists("C:/Users/Dhruv/DS"):
            os.makedirs("C:/Users/Dhruv/DS/")

        connect = sqlite3.connect("C:/Users/Dhruv/DS/data.db")
        connect.execute("""CREATE TABLE IF NOT EXISTS FD 
                        (ID TEXT NOT NULL,
                         NAME TEXT NOT NULL,
                         P INT NOT NULL,
                         R INT,
                         T INT,
                         A INT NOT NULL,
                         D1 DATE,
                         D2 DATE);""")

        tobeexec = "INSERT INTO FD(ID, NAME, P, R, T, A, D1, D2) VALUES(?, ?, ?, ?, ?, ?, ?, ?)"

        connect.execute(tobeexec, params);

        connect.close()

我只想將數據寫到數據庫中,但是當我嘗試檢索它時,它表明數據庫是空的。

您需要提交事務

connect.execute(tobeexec, params);
connect.commit()
connect.close()

除了最佳答案,還可以考慮將Connection對象用作上下文管理器,它很有用,並且在SQLite3 API中提供

connect = sqlite3.connect("C:/Users/Dhruv/DS/data.db")
try:
    with connect:
        connect.execute(...)  # Your SQL statement
except Exception as err:
    # Do what you want with the Exception

如果您在with connect語句沒有引發錯誤,則事務將自動提交。 如果出現問題,事務將回滾。

(另一個答案可能是在加載數據庫后將isolation_level設置為None ,這將意味着自動提交模式)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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