![]() |
1
1
严格地说,问题不是由允许这样做的DBAPI引起的,而是由使用不同SQL语法的不同数据库引起的。db api模块将准确的查询字符串以及参数传递给数据库。“解析“参数标记由数据库本身完成,而不是由DBAPI模块完成。 这意味着如果你想解决这个问题,你必须 一些 更高层次的抽象。如果不想添加额外的依赖项,则必须自己添加。但是,您可以根据后端模块的paramStyle,尝试用所需的参数标记动态替换查询字符串中的参数标记,而不是手动转义和替换。然后将带有参数标记的字符串传递给数据库。例如,您可以在任何地方使用“%s”,并使用python字符串替换将“%s”替换为“:1”、“:2”等。如果数据库使用“numeric”样式,等等… |
![]() |
2
5
|
![]() |
3
0
这太糟糕了,因为SQLAlchemy将是解决这个问题的完美方案。理论上,DB-API 2.0的构建是为了提供这种灵活性。但这需要每个驱动程序开发人员(对于Oracle、MySQLDB、Postgres等)在其驱动程序中实现所有不同的参数样式。它们不是这样的,所以您会被每个数据库引擎的“首选”参数样式所困扰。 如果您拒绝使用SQLAlchemy或任何其他更高的抽象层或现代MVC类库,那么您必须为此编写自己的更高级别的抽象。我不建议这样做,尽管这是你在这里选择的解决方案。你在那里面临着一些可怕的细节,并且会浪费时间找出其他人已经解决的错误。 不要将外部库依赖项视为一件坏事。如果这是您使用Python的方法,那么您将错过该语言中一些最强大的特性。 挑选你的毒药。 |
|
Johnny T · 基于当前值的SQL合并表[重复] 3 月前 |
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 4 月前 |
![]() |
ojek · 如何对SQL结果进行分组和编号? 4 月前 |
![]() |
senek · 如何在PL/SQL中将选择结果(列)放入数组中 4 月前 |
![]() |
Sax · 规范化Google表格(第一步) 4 月前 |
![]() |
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 4 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 4 月前 |