【问题标题】:Python SQL sanitization WITHOUT driver support没有驱动程序支持的 Python SQL 清理
【发布时间】:2016-02-26 06:24:19
【问题描述】:

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

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

要正确执行此操作,但它不适用于我的 ODBC 驱动程序 (4D V11) 和 pyodbc。

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

【问题讨论】:

  • 如果您遇到支持不佳的模块,您最好尝试自己修复该模块。
  • (但如果它甚至不处理 strings,它可能与生产质量模块相去甚远,你根本不应该使用它。)跨度>
  • 我使用的python module是pyodbc。我认为这很好。有问题的是系统级 4D ODBC 驱动程序。由于那是专有代码,我必须想出一个解决方法。

标签: python sql odbc sanitization 4d-database


【解决方案1】:

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

Python 有一组很好的字符串处理函数,所以它应该很容易解决你的具体情况,正如你的问题 cmets 所建议的那样。

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

黑客愉快!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    相关资源
    最近更新 更多