SQL 语句在 Python 中通过 mysqldb.query 失败

SQL statement fails through mysqldb.query in Python

我试图通过我的脚本传递一个查询,但我得到一个 SQL 错误。 运行 Heidisql 中的相同 sql 语句工作正常。

我的问题是: - 我做错了什么?

错误信息

_mysql.connection.query(self, query) _mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Gabrielsen)' at line 1")

Python 脚本,其中数据库是到数据库的正确连接

F="Gunnar Gabrielsen"
Database.query('INSERT INTO documents (name) values (' + F + ');')
i=Database.query('SELECT * from documents;')
print(i)

Python version:Python 3.4

模块:我的sqldb

数据库:MariaDB

您还没有为您的价值加上引号。

但是无论如何你都不应该这样做。除了引用问题之外,您还向 sql 注入攻击敞开了大门。

改为使用参数化查询:

cursor.execute('INSERT INTO documents (name) values (%s)',  (F,))

您生成了这个:

INSERT INTO documents (name) values (Gunnar Gabrielsen);

你需要的是

INSERT INTO documents (name) values ("Gunnar Gabrielsen");

但是,如果不进行转义或参数化,您将打开您的代码(和系统)以进行 "sql injection" 和其他黑客攻击。