嵌入子例程调用sql

2024-04-19 10:00:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我在尝试执行SQL代码行时遇到问题:

sql1 = "select ",(variable.get())," FROM ProductTable WHERE", Queryby.get() cursor.execute(sql1)

当我在程序中执行这些代码行时,它说

ValueError: operation parameter must be str

我想这是因为我试图在sql代码行中使用.get()。我假设这是因为如果我把代码从cursor.execute(sql)改成print(sql1),它会说:

('select ', 'OrderNo', ' FROM ProductTable WHERE', 'This is a test')

我认为问题在于这并不都被认为是一个字符串,但是我不确定如何在不干扰SQL的情况下调用代码的.get()部分。有什么建议吗


Tags: 代码from程序executesqlgetwherevariable
1条回答
网友
1楼 · 发布于 2024-04-19 10:00:36

不要使用逗号,而是使用+连接字符串:

sql1 = "select " + variable.get() + " FROM ProductTable WHERE" + Queryby.get()

这将返回一个字符串,但请注意,一般来说,这是构建查询的不安全方法。不要简单地把字符串粘在一起,请仔细阅读parameterized queries以保护自己免受SQL injection的攻击,这是最常见的安全漏洞之一

我不确定您使用什么库来访问数据库,但大多数都支持开箱即用的参数化

相关问题 更多 >