1

有没有办法在将 SQL 输入传递给 python 中的 cursor.execute 命令之前正确清理它们?我知道您应该能够制作如下构造:

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

正确地做到这一点,但它不适用于我的 ODBC 驱动程序(4D V11)和 pyodbc。

更具体地说,我正在尝试使用上述格式编写 INSERT 语句。当我运行代码时,插入了一条记录,但结果记录中只填充了数字变量——字符串为空白。如果我将 ODBC 驱动程序(和数据库,显然)切换到 pqodbc 和一个相同设置的 Postgresql 数据库(至少对于我试图插入的字段)相同的代码运行完美。这对我来说意味着问题出在 4D 驱动程序中,而不是 Python 中。也就是说,4D 驱动程序不太可能很快得到修复,所以我正在寻找其他解决方法。有什么建议么?谢谢

4

1 回答 1

0

不幸的是,由于有很多类似 SQL 的方言,因此没有一致的方式来实现清理。这就是为什么一个好的司机应该出口一个消毒设施。

Python 有一套很好的字符串处理函数,所以它应该很容易修复您的特定情况,正如您的问题评论所建议的那样。

实现这一点时您可以做的一件好事是查看一些驱动程序的转义系统:它可能包含一些有用的技巧;-)

快乐黑客!

于 2012-12-14T11:29:53.737 回答