Sqlite3 pas l'insertion des valeurs dans la base de données

voix
0

J'ai fait un programme permet à un utilisateur de manipuler une base de données, j'ai une partie où l'utilisateur peut ajouter plusieurs entrées dans une certaine base de données (n'importe où entre 1 à 10 entrées) J'ai créé un autre programme (ci-dessous) que j'utilise pour « réinitialiser la base de données, en utilisant des principes similaires à ce que fait mon programme principal.

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

Si je lance cette fonction, tous les éléments de la base de données existante sont imprimées, alors si je choisis de ne supprimer que ce qui existe dans la base de données, la fonction d'impression retourne rien. Si je choisis de supprimer, puis « ajouter » les éléments à la base de données, la fonction d'impression renvoie les articles que j'ai ajouté

Cependant, quand je re-exécuter le programme, la première instruction d'impression renvoie les éléments originaux de la base de données (non la table supprimé, ou les éléments de la users_list), ce qui est bien sûr pas utile.

Mon programme principal est affecté par cela aussi, et il pose des problèmes que je besoin de données pour être mis à jour rapidement. Je l'utilise aussi une application « gestionnaire SQLite » pour voir mes tableaux, et ils ne met pas à jour en ce que soit

Créé 07/11/2018 à 20:09
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Avère que je ne commets les données, je devais faire:

schoolDBConn.commit()

ou

with schoolDBConn:
Créé 07/11/2018 à 20:39
source utilisateur

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