sqlite3.OperationalError:附近“”:语法错误

时间:2018-08-05 08:32:49

标签: python sql python-3.x python-2.7 sqlite

你好,你呢?我希望如此,所以我正在开发一个商业应用程序,但是这在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”返回此错误:

 (IMAGE) Name "ErlonJunior" without spaces works, but "José Street" with space returns this error

错误sqlite3.OperationalError:“José”附近:语法错误:

 (IMAGE) Error sqlite3.OperationalError: near "José": syntax error

1 个答案:

答案 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')]