这是一个小问题,但我有点难过。
sqlite 对查询参数的数量有 999 个硬限制。这是在不属于公共头文件的标头中设置的,运行时使您能够降低限制,但不超过硬限制。Snow Leopard(显然还有 Lion)上的 Python sqlite3 模块允许比这更多的参数,但是,我无法弄清楚这是怎么可能的。
我考虑了 Python 包装器自己进行参数替换并将完整语句传递给 sqlite3 的可能性;但据我从源代码中可以看出,这并没有发生。我还考虑了在 Snow Leopard 上实现 sqlite3 是从稍微不同的源代码编译而来的可能性;但事实证明,Apple 发布了其开源修改(请参阅http://opensource.apple.com/source/SQLite/SQLite-74.11/),并且其源中的参数限制与默认值相同。
如果有人知道这可能是如何发生的(我确信它正在发生;我已经创建了带有 2000 个参数的语句并且它们工作正常),请插话。不管它的价值是什么,我遇到了这个奇怪的事情,因为相同的由于参数限制,Windows 上的代码中断。