【问题标题】:mod_python problem?mod_python 问题?
【发布时间】:2010-11-21 00:31:48
【问题描述】:

我一直在使用 mod_python、python 和 SQL Alchemy 在一个网站上工作,但遇到了一个奇怪的问题:当我查询数据库的所有记录时,它返回正确的结果集;但是,当我刷新页面时,它会返回一个结果集,其中附加了相同的结果集。当我更多地刷新页面时,我会得到更多“堆叠”的结果集。

例如:

首页加载:10 个结果

第二页加载:20 个结果(每个结果两个)

第三页加载:30 个结果(每个三个)

等等……

这是 mod_python 的一些潜在问题吗?我不记得在使用 mod_wsgi 时遇到过这种情况。

【问题讨论】:

  • 你能给一些代码sn-ps吗?可能会有所帮助。

标签: python sqlalchemy mod-python


【解决方案1】:

我从来没有听说过,但如果不看一些代码就无法分辨。

也许您将结果集列表初始化为全局或共享成员,然后在调用应用程序时将结果附加到它而不将其重置为空?意外重用列表的经典方法是将列表放入函数的默认参数值中。

(当然,在 mod_wsgi 中也会发生同样的情况。)

【讨论】:

  • 这是一个很好的提示,我在查询后将模型的“结果”列表设置为空,但我会仔细检查并确保不是这种情况。
  • 问题是在对象的构造函数内部进行查询,只需将其移出并将结果存储在方法内的局部变量中即可解决问题。感谢您的帮助!
【解决方案2】:

我不了解您使用的任何技术。但是,在您认为这可能是您正在使用的软件包中可能存在的错误之前,您必须考虑一件事。

Occam's razor.

基本上,“当您有两种相互竞争的理论做出完全相同的预测时,越简单的理论越好。”

您的两个可能的主要理论是您正在使用的组件中存在错误(许多其他人使用)或您的代码中存在错误。很有可能(我很抱歉)您的代码中存在错误。

我在自己的代码中使用了这个想法,每次出现问题时,它确实是我的代码。

希望其他人可以将您引导至该错误,并且您可能希望发布问题代码。您可能没有清除结果集或某些东西(变量)的保留时间比您预期的要长。

【讨论】:

    猜你喜欢
    • 2011-01-06
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多