Saya cuba menjalankan pertanyaan sql asas untuk mengemas kini nilai schoolnum dalam pangkalan data yang dipanggil bartonhill, menggunakan rentetan f untuk meletakkan nilai dalam
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())
Walau bagaimanapun, jika saya memasukkan nama saya ollie (yang wujud dalam pangkalan data sebagai nama pertama), menjalankan kod ini memberikan ralat "sqlite3.operationalerror: near "ollie": syntax error"
Saya cuba menukar jenis data nama dan nombor_baru tetapi itu hanya mengubah ralat
Masih banyak yang perlu diperbaiki. Saya hanya membuat beberapa perubahan kecil, anda boleh memperbaikinya lagi. Tuple sentiasa dimasukkan. Menukar kunci utama boleh dilakukan tetapi tidak semudah itu, google sahaja. Meminta nilai baharu selepas memulakan nilai buat kali pertama. Sila baca juga komen di atas dengan teliti!
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())
Keluaran:
>>> enter your firstname: ollie >>> enter your lastname: burgess >>> enter your new school number: 20000 >>> [(1, 20000, 'ollie', 'burgess')]
atau pilihan lain:
c.execute("select schoolnum, lastname from bartonhill where firstname = ?;", (firstname,)) print(c.fetchone())
Hanya memberi anda nilai khusus:
(20000, 'Burgess')
Atas ialah kandungan terperinci Tidak pasti mengapa saya mendapat ralat sintaks apabila cuba menjalankan pertanyaan SQL UPDATE menggunakan rentetan f. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!