没有驱动支持的Python SQL清理

1 投票
1 回答
1069 浏览
提问于 2025-04-16 12:56

有没有办法在把SQL输入传给python中的cursor.execute命令之前,先进行适当的处理呢?我知道应该可以像下面这样构造:

cursor.execute("insert into Attendees values (?, ?, ?)", (name, seminar, paid) )

来正确处理这个问题,但在我的ODBC驱动(4D V11)和pyodbc中却不管用。

具体来说,我正在尝试写一个INSERT语句,使用上面的格式。当我运行代码时,确实插入了一条记录,但结果中的字符串字段是空的,只有数字字段有值。如果我把ODBC驱动换成pqodbc,并且使用一个设置完全相同的Postgresql数据库(至少在我尝试插入的字段上),同样的代码就能完美运行。这让我觉得问题出在4D驱动上,而不是Python本身。不过,4D驱动可能不会很快修复,所以我在寻找其他解决办法。有什么建议吗?谢谢!

1 个回答

0

很不幸的是,由于有很多类似SQL的语言,它们在处理数据时没有统一的方法来确保安全性。这就是为什么一个好的数据库驱动程序应该提供一个安全处理的功能。

Python有一套很不错的字符串处理函数,所以根据你问题下的评论,解决你的具体问题应该是比较简单的。

在实现这个功能的时候,你可以看看一些数据库驱动程序的转义系统:里面可能会有一些有用的小技巧哦;-)

祝你编程愉快!

撰写回答