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

2024-09-30 18:16:21 发布

您现在位置: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脚本,其中Database是到数据库的正确连接

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

Python版本:Python 3.4在

在模块:Mysqldb在

数据库:MariaDB


Tags: theto脚本数据库sqlyour错误mysql
2条回答

你没有在你的价值上加引号。在

但无论如何你不应该这样做。除了引用问题之外,您还面临着sql注入攻击。在

请改用参数化查询:

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

您已经生成了:

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

你需要的是

^{pr2}$

但是,如果不进行转义或参数化,则会将代码(和系统)打开,进行“sql注入”和其他黑客攻击。在

相关问题 更多 >