Sqlite3 не вставляет значения в базу данных - PullRequest
0 голосов
/ 07 ноября 2018

Я создал программу, позволяющую пользователю манипулировать базой данных, у меня есть часть, в которой пользователь может добавить несколько записей в определенную базу данных (от 1 до 10 записей). Я создал другую программу (ниже), которую я использую «перезагрузить» базу данных, используя принципы, аналогичные тем, что делает моя основная программа.

import sqlite3, time
schoolDBConn = sqlite3.connect("SCHOOL_DB.db")
schoolDBCursor = schoolDBConn.cursor()

schoolDBCursor.execute(
                            """
                               CREATE TABLE IF NOT EXISTS USER_DETAILS 
                               (
                               username text,
                               password text,
                               clearance int,
                               classes int
                               )
                            """
                            )

schoolDBCursor.execute("SELECT * FROM USER_DETAILS")
print(schoolDBCursor.fetchall())

if input("Delete all user_details?").upper() == "Y":
    schoolDBCursor.execute("DELETE FROM USER_DETAILS")
if input("add items to user_details?").upper() == "Y":
    user_list = [("foo","bar",3,0),("bar","foo",3,0),("Terri","Pass",2,0),
                 ("Chris","Pass",2,0),("Tony","Pass",2,0),("Emma","Pass",2,0),
                 ("Thomas","Pass",1,0),("Penny","Pass",1,0),("Kamryn","Pass",1,0),
                 ("Kelsie","Pass",1,0),("James","Pass",1,0),("Connor","Pass",1,0),
                 ("Steve","Pass",1,0),("Bob","Pass",2,0),("Elon","Pass",1,0)]
    for i in user_list:
        schoolDBCursor.execute("""INSERT INTO USER_DETAILS VALUES (?,?,?,?)""",
                               (i[0],i[1],i[2],i[3]))

schoolDBCursor.execute("SELECT * FROM USER_DETAILS")
print(schoolDBCursor.fetchall())

Если я запускаю эту функцию, все элементы в существующей базе данных печатаются, тогда, если я решу удалить только то, что существует в базе данных, функция печати ничего не возвращает. Если я решу удалить, а затем «добавить» элементы в базу данных, функция печати вернет элементы, которые я добавила

Однако, когда я перезапускаю программу, первый оператор print возвращает исходные элементы в базе данных (не удаленную таблицу или элементы в users_list), и это, конечно, бесполезно.

Это влияет и на мою основную программу, и это вызывает проблемы, так как мне нужно, чтобы данные быстро обновлялись. Я также использую приложение "SQlite manager" для просмотра своих таблиц, и они тоже не обновляются в этом

1 Ответ

0 голосов
/ 07 ноября 2018

Оказывается, я не зафиксировал данные, мне пришлось сделать:

schoolDBConn.commit()

или

with schoolDBConn:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...