Not sure why I get a syntax error when trying to run a SQL UPDATE query using an f string

王林
Release: 2024-02-09 22:24:04
forward
614 people have browsed it

不知道为什么在尝试使用 f 字符串运行 SQL UPDATE 查询时出现语法错误

Question content

I am trying to run a basic sql query to update the value of schoolnum in a database named bartonhill, using an f string to put the value enter

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

Copy after login

However, if I enter my name ollie (which exists in the database as firsname), running this code gives the error "sqlite3.operationalerror: near "ollie": syntax error"

I tried changing the data type of name and new_number but this only changed the error


Correct answer


There is still a lot to improve. I only made some small changes, you can improve it further. Tuples are always inserted. Changing the primary key is possible but not that easy, just google it. Requests a new value after initializing the value for the first time. Please also read the comments above carefully!

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())
Copy after login

Output:

>>> enter your firstname: ollie
>>> enter your lastname: burgess
>>> enter your new school number: 20000
>>> [(1, 20000, 'ollie', 'burgess')]
Copy after login

or another option:

c.execute("select schoolnum, lastname from bartonhill where firstname = ?;", (firstname,))
print(c.fetchone())
Copy after login

Only gives you specific values:

(20000, 'Burgess')
Copy after login

The above is the detailed content of Not sure why I get a syntax error when trying to run a SQL UPDATE query using an f string. For more information, please follow other related articles on the PHP Chinese website!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!