Sqlite3 не вставляя значения в базу данных

голоса
0

Я сделал это программа позволяет пользователю манипулировать базу данных, у меня есть часть, где пользователь может добавить несколько записей в определенную базу данных (где-то между 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())

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

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

Моя основная программа зависит от этого тоже, и это вызывает проблемы, как мне нужно данные, которые будут быстро обновляться. Я также использовать приложение «SQLite Manager», чтобы просмотреть мои таблицы, и они не обновляются в том, что либо

Задан 07/11/2018 в 20:09
источник пользователем
На других языках...                            


1 ответов

голоса
1

Оказывается, я не совершал данные, я должен был сделать:

schoolDBConn.commit()

или же

with schoolDBConn:
Ответил 07/11/2018 в 20:39
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more