Python sqlite3保存数据

时间:2015-08-23 08:25:15

标签: python database python-3.x sqlite save

有没有人知道如何更正此问题,因为此代码未将数据保存在数据库中?

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()

我只想在数据库中写入数据,但是当我尝试检索它时,它显示数据库为空... 无论如何,提前谢谢......

2 个答案:

答案 0 :(得分:1)

您需要commit the transaction

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

答案 1 :(得分:0)

除了最佳答案之外,还要考虑使用 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 设置为,这意味着自动提交模式)