在控制台脚本中执行查询

2024-09-29 23:15:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力弄明白为什么pyramid的引导后得到的会话拒绝执行查询,从而引发transaction.interfaces.NoTransaction异常。在

我正在尝试使用金字塔配置创建一个脚本,但是正在处理一个后台任务。我使用bootstrap函数来设置环境。我尝试的方法之一是:

from pyramid.plaster import bootstrap

with bootstrap(sys.argv[1]) as env
    dbsession = env['request'].dbsession

    with dbsession.begin_nested():
        res = dbsession.execute('''SELECT ....''')
        ...

这将按预期创建一个SessionTransaction,但仍会引发一个NoTransaction。在

如何初始化连接,以便可以像在视图中一样访问它?在


Tags: 方法函数fromenv脚本pyramid环境with
2条回答

我从未使用过pyramid.plaster.bootstrap。但是,可以使用与使用alchemy模板创建新项目时自动生成的脚本相同的模板。在

pcreate -t alchemy myproject

脚本如下所示:

^{pr2}$

setup.py中的入口点如下所示:

entry_points="""\
  [paste.app_factory]
  main = myproject:main
  [console_scripts]
  initialize_myproject_db = myproject.scripts.initializedb:main
  """,

https://github.com/Pylons/pyramid/issues/3219中所述,默认情况下不会初始化事务。可以使用以下方法完成:

with bootstrap(sys.argv[1]) as env:
    with env['request'].tm:
        dbsession = env['request'].dbsession
        dbsession.execute(...)

相关问题 更多 >

    热门问题