小编Org*_*nda的帖子

是否可以调试 CherryPy 应用程序?

我之前在这里看到过这个问题,但我想得到一个最终的是/否。

我一直在尝试使用 Netbeans 6.8(根本没有运气)和新发布的 Netbeans 6.9(注意到代码已被调用但未能阻止代码执行)调试我的应用程序。

是否可以调试 CherryPy 应用程序?

python cherrypy

6
推荐指数
1
解决办法
5500
查看次数

如何在Cherrypy和SQLAlchemy中的同一请求中使用多个数据库?

我的应用程序使用与此类似的技术连接到多个数据库.只要我不尝试在同一请求中访问不同的数据库,它就可以工作.回顾上面的脚本,我看到他们为此写了一个评论:

SQLAlchemy integration for CherryPy,
such that you can access multiple databases,
but only one of these databases per request or thread.
Run Code Online (Sandbox Code Playgroud)

我的应用程序现在要求我从数据库A和数据库B中获取数据.是否可以在单个请求中执行此操作?

请参阅下面的资料和示例:

工作示例1:

from model import meta

my_object_instance = meta.main_session().query(MyObject).filter(
    MyObject.id == 1
).one()
Run Code Online (Sandbox Code Playgroud)

工作示例2:

from model import meta

my_user = meta.user_session().query(User).filter(
    User.id == 1
).one()
Run Code Online (Sandbox Code Playgroud)

错误示例:

from model import meta

my_object_instance = meta.main_session().query(MyObject).filter(
    MyObject.id == 1
).one()

my_user = meta.user_session().query(User).filter(
    User.id == 1
).one()
Run Code Online (Sandbox Code Playgroud)

这个错误:

(sqlalchemy.exc.ProgrammingError) (1146, "Table 'main_db.user' doesn't exist")
Run Code Online (Sandbox Code Playgroud)

资料来源:

# meta.py
import …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy cherrypy

6
推荐指数
1
解决办法
2502
查看次数

清除sqlalchemy反射缓存

我正在使用sqlalchemy的反射工具来获取Table对象.我这样做是因为这些表是动态的,表/列可以更改.这是我正在使用的代码:

def getTableByReflection(self, tableName, metadata, engine):

    return Table(tableName, metadata, autoload = True, autoload_with = engine)
Run Code Online (Sandbox Code Playgroud)

问题是,当上面的代码运行两次时,无论列是否已更改,它似乎都会返回相同的结果.我尝试刷新使用mysession.refresh(mytable)但失败,因为表没有附加到任何元数据 - 这是有道理但但为什么我看到缓存结果?

有没有办法告诉元数据/引擎/会话忘记这个表,让我干净地加载它?

python sqlalchemy

2
推荐指数
1
解决办法
2296
查看次数

SQLAlchemy MySQL STRAIGHT_JOIN

我的代码目前在 SQLAlchemy ORM 层中执行查询就好了,如下所示:

session().query(model_a).join(
    (model_b, something == somethingelse)
).join(
    (model_c, something == somethingelse)
) # etc ...
Run Code Online (Sandbox Code Playgroud)

但是我遇到了一个需要几分钟才能完成的查询。结果证明 MySQL 是罪魁祸首,因为它没有按照我们要求的顺序加入。添加STRAIGHT_JOINSELECT喜欢:

SELECT STRAIGHT_JOIN table_a.id FROM table_a INNER JOIN table_b ...
Run Code Online (Sandbox Code Playgroud)

解决了这个问题,但我不知道是否有办法让 SQLAlchemySTRAIGHT_JOINSELECT. 文档建议可以向select()via添加提示,with_hint(table_a, "STRAIGHT_JOIN")但这会将文本添加到错误的位置,从而导致 MySQL 语法错误。这也将涉及跳出并不理想的 ORM。

我已经尝试过使用各种 MySQL 调试技术,例如EXPLAINANALYZE TABLE等等……但似乎无法找出 MySQL 选择错误路径的原因。手动切换连接的顺序似乎也没有帮助,所以我现在处于需要让 STRAIGHT_JOIN 工作的位置。

有任何想法吗?

python mysql sqlalchemy

2
推荐指数
1
解决办法
678
查看次数

标签 统计

python ×4

sqlalchemy ×3

cherrypy ×2

mysql ×1