Maison >développement back-end >Tutoriel Python >Je ne sais pas pourquoi j'obtiens une erreur de syntaxe lorsque j'essaie d'exécuter une requête SQL UPDATE à l'aide d'une chaîne f
J'essaie d'exécuter une requête SQL de base pour mettre à jour la valeur de schoolnum dans une base de données appelée bartonhill, en utilisant une chaîne f pour mettre la valeur dans
import sqlite3 name = [input('enter your firstname: ')] conn = sqlite3.connect('revision.db') c = conn.cursor() # create table c.execute('''CREATE TABLE IF NOT EXISTS bartonHill ( firstName TEXT NOT NULL, lastName TEXT NOT NULL, schoolNum INTEGER NOT NULL PRIMARY KEY )''') conn.commit() c.execute("INSERT INTO bartonHill VALUES ('Ollie','Burgess','20314')") conn.commit() new_number = tuple[(int(input('enter your new school number')))] c.execute(f"UPDATE bartonHill set schoolNum = '{new_number}' WHERE firstName = '{name}'") conn.commit c.execute('SELECT lastName, schoolNum FROM bartonHill WHERE firstName = (?)',name) print(c.fetchall())
Cependant, si je saisis mon nom ollie (qui existe dans la base de données en tant que prénom), l'exécution de ce code donne l'erreur "sqlite3.opérationalerror : près de "ollie" : erreur de syntaxe"
J'ai essayé de changer le type de données nom et new_number mais cela n'a changé que l'erreur
Il y a encore beaucoup à améliorer. Je n'ai apporté que quelques petites modifications, vous pouvez l'améliorer davantage. Les tuples sont toujours insérés. Changer la clé primaire est possible mais pas si simple, il suffit de la rechercher sur Google. Demande une nouvelle valeur après avoir initialisé la valeur pour la première fois. Veuillez également lire attentivement les commentaires ci-dessus !
import sqlite3 conn = sqlite3.connect('revision.db') c = conn.cursor() # create table c.execute('''create table if not exists bartonhill ( id integer primary key autoincrement, schoolnum integer not null, firstname text not null, lastname text not null )''') conn.commit() c.execute("insert into bartonhill (schoolnum,firstname,lastname) values (?,?,?); ", (20314, 'ollie','burgess')) conn.commit() # ask for changes here firstname = input('enter your firstname: ') lastname = input('enter your lastname: ') new_number = int(input('enter your new school number: ')) c.execute("update bartonhill set schoolnum = ? where firstname = ?;", (new_number, firstname)) conn.commit c.execute("select * from bartonhill where firstname = ?;", (firstname,)) print(c.fetchall())
Sortie :
>>> enter your firstname: ollie >>> enter your lastname: burgess >>> enter your new school number: 20000 >>> [(1, 20000, 'ollie', 'burgess')]
ou une autre option :
c.execute("select schoolnum, lastname from bartonhill where firstname = ?;", (firstname,)) print(c.fetchone())
Ne vous donne que des valeurs spécifiques :
(20000, 'Burgess')
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!