你好,你呢?我希望如此,所以我正在开发一个商业应用程序,但是这在sql中给出了一个错误: sqlite3.OperationalError:在“José”附近:语法错误,好像短语的空格中存在错误
cursor.execute(f"""update funcionarios
set nome = {nome}, senha = {senha}, telefone = {telefone},
endereco = {endereco}, anotacoes = {anotacao}
where cpf = {pesq}
""")
没有空格的名称“ ErlonJunior”有效,但是带有空格的“JoséStreet”返回此错误:
错误sqlite3.OperationalError:“José”附近:语法错误:
答案 0 :(得分:2)
不要手动格式化SQL字符串(在您的情况下为f字符串),这很容易出错。您可以在SQLite3中使用参数化查询:
import sqlite3
with sqlite3.connect(":memory:") as con:
cur = con.cursor()
cur.execute('CREATE TABLE funcionarios (id integer PRIMARY KEY, nome text)')
cur.execute('INSERT INTO funcionarios (nome) VALUES (:nome)',
{'nome': 'Rua Jose'})
cur.execute('UPDATE funcionarios SET nome = :nome WHERE id = 1',
{'nome': 'Santa Maria'})
cur.execute('SELECT * FROM funcionarios')
print(cur.fetchall())
此打印:
[(1, 'Santa Maria')]