当前位置: 首页 > 面试题库 >

调试(显示)SQLAlchemy发送到数据库的SQL命令

双恩
2023-03-14
问题内容

我有一个称为Person的ORM类,它包装一个person表:

设置与db等的连接后,我运行以下语句:

people = session.query(Person).all()

人员表尚不包含任何数据,因此,当我打印变量people,我得到一个空列表。

我将在ORM类中引用的表重命名Peoplepeople_foo(不存在)。

然后,我再次运行脚本。我很惊讶在尝试访问不存在的表时没有引发异常。

因此,我有以下两个问题:

  1. 如何设置SQLAlchemy,以便将db错误传播回脚本?
  2. 如何查看(即打印)发送到数据库引擎的SQL?

如果有帮助,我正在使用PostgreSQL。

[编辑]

我在写包裹。在我的__main__.py脚本中,我有以下代码(此处缩短):

### __main__.py
import common # imports logging and defines logging setup funcs etc

logger = logging.getLogger(__name__)


def main():    
    parser = OptionParser(usage="%prog [options] <commands>",
                          version="%prog 1.0")

    commands = OptionGroup(parser, "commands")

    parser.add_option(
        "-l",
        "--logfile",
        dest="logfile",
        metavar="FILE",
        help="log to FILE. if not set, no logging will be done"
    )

    parser.add_option(
        "--level",
        dest="loglevel",
        metavar="LOG LEVEL",
        help="Debug level. if not set, level will default to low"
    )

    # Set defaults if not specified
    if not options.loglevel:
        loglevel = 1
    else:
        loglevel = options.loglevel

    if not options.logfile:
        logfilename = 'datafeed.log'
    else:
        logfilename = options.logfile

    common.setup_logger(False, logfilename, loglevel)

       # and so on ...



        #### dbfuncs.py


import logging

    # not sure how to 'bind' to the logger in __main__.py
    logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)

    engine = create_engine('postgres://postgres:pwd@localhost:port/dbname', echo=True)

[Edit2]

Common模块可正确设置记录器,我可以在导入common的其他模块中使用记录器。

但是在dbfuncs模块中,我收到以下错误/警告:

找不到记录程序“ sqlalchemy.engine.base.Engine的处理程序”


问题答案:

除了echoparameter之外,create_engine()还有一种更灵活的方法:配置logging回显引擎语句:

import logging
logging.basicConfig()
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)

有关更多信息,请参见文档的“配置日志记录”部分。



 类似资料:
  • 问题内容: 已关闭 。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑此帖子来关注一个问题。 10个月前关闭。 好的,我在phpmyadmin(sql)上有一个数据库,我想将我的一个表显示为HTML / PHP上的表。我已经在网上搜索过,无法实现此功能,所以我想知道是否有人可以帮助我进行编码? 没有密码 我想显示表名中的数据 问题答案: 您说您在PhpMyAd

  • 问题内容: 我正在使用flask和SQL Alchemy开发应用程序。我需要显示执行查询以生成页面的时间,以及每个查询用于调试的时间 最好的方法是什么? 问题答案: 如果你使用的是扩展名,并且不想打扰,可以设置配置密钥。

  • 问题内容: 我有这个小点击计数器。我想将每次单击都包含在mysql表中。有人可以帮忙吗? 万一有人想看看我做了什么: 这是phpfile.php,出于测试目的,将数据写入txt文件 问题答案: 您的问题中定义的JavaScript不能直接与MySql一起使用。这是因为它不在同一台计算机上运行。 JavaScript在客户端(在浏览器中)运行,并且数据库通常在服务器端存在。您可能需要使用中间服务器端

  • 本文向大家介绍修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库,包括了修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库的使用技巧和注意事项,需要的朋友参考一下 具体不废话了,请看下文代码详细说明吧。 向表中增加一个 varchar 列:   ALTER TABLE distributors ADD COLUMN address varchar(30)

  • 我想创建网站。我已经配置了登录“/login”和注册“/registration”页面。这个网站的主要任务是显示每个学生的时间表。现在我需要在页面“/Schedule”上显示科目列表,使用HTML-table,根据学生注册时选择的字段组和课程。我有14个不同的表格和科目列表(一个表格-一组学生)。 是否需要为每个表创建@Entity类和存储库? 如何使用注册数据显示学生信息? 页面“/计划”的控制

  • 应用程序运行良好...只是数据没有出现...我已经添加了sha用户电子邮件显示在登录后,在登录活动中我已经添加了 但是在实时数据库数据不显示以防万一…我也等了半个小时,尝试了所有的东西…网络也不错。数据库中的数据库规则的数据库图片 mainActivity.java//不能用于单个子级,即firebaseDatabase.getInstance().getReference().child(“aj