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

覆盖sqlalchemy反映表中的默认值

隗翰海
2023-03-14
问题内容

我已经在现有的mysql数据库中反映了表的负载。我想表示的是,任何表中具有特定名称的任何列默认为datetime.now()。但是,天真地遍历表和列,仅对那些我发现具有特定名称的表和列设置默认设置是行不通的。session.flush()我收到以下错误:

AttributeError: 'builtin_function_or_method' object has no attribute '__visit_name__'

这似乎与对_set_parent的调用(以及在sqlalchemy.schema的self._init_items(*toinit)第721行中的调用)有关。

有谁知道是否有办法做到这一点,而不必遍历我所有的反射表并在所有做相同事情的地方都添加Column(..)行,或者使用真正丑陋的黑客手段?


问题答案:

五年后,您可以使用事件侦听器[1]。您可以向监听器注册要运行的函数:

def do_this_on_column_reflect(inspector, table, column_info):
    column_name = column_info.get("name")
    if column_name == "create_datetime":
        column_info["default"] = datetime.now()
event.listen(Table, "column_reflect", do_this_on_column_reflect)

[1] http://docs.sqlalchemy.org/zh-
CN/latest/core/events.html#sqlalchemy.events.DDLEvents.column_reflect

[2] http://docs.sqlalchemy.org/zh-CN/latest/core/event
.html#sqlalchemy.event.listen



 类似资料:
  • 问题内容: 我已经能够覆盖所有名称以“ android:”为前缀的主题,但是Android themes.xml还定义了似乎无法被覆盖的属性。例如: colorTheground是在Theme.Light xml中定义的,但是在此处添加它可以使我 错误。如何为整个应用程序覆盖该样式? 问题答案: 您可以用修改属性(如)的方式覆盖标准属性,只是不要忘记添加如下前缀:

  • 问题内容: 我想覆盖Java外观。我只想显示不同的按钮。 我想要Windows Look and Feel的所有功能,但仅按钮有所不同。希望你明白我的意思。 还告诉我如何制作圆形的JtabbedPane ??? 问题答案: 自定义GUI类 调用您的自定义GUI类

  • 问题内容: 我有一个模板与此: Django自动将此翻译为Terminarsesión西班牙语。但是,我想将其翻译为Cerrarsesión。 我试图将此文字添加到.po文件中,但是在编译消息时出现错误,指出该文字重复。 有没有一种方法可以更改/覆盖默认的Django翻译? 谢谢。 问题答案: 最简单的方法是收集在django.contrib.admin语言环境文件夹中找到的.po文件,然后重新编

  • 我试图将Spring应用程序(大部分)转换为Spring Boot应用程序。在应用程序中,我有一个HTTP基本过滤器,收集用户名和密码,然后在DataSource实现中作为变量传递。 在这个数据源中,getConnection()方法是这样的: (由于StackOverflow格式问题,\n作为新行) 在Spring中,我可以毫无问题地实现@autowiledPrivate DataSource

  • 问题内容: 我有一个静态html,imgs,flash内容文件夹,它位于webapp文件夹之外。现在,我正在使用符号链接将该文件夹映射到我的webapp目录中。我的问题是,当我取消部署应用程序时,它会遵循符号链接并删除所有这些文件。 我尝试实现的解决方案之一是特殊的servlet,它包装了默认的servlet,但是使用了不同的相对路径。我在找出如何以覆盖默认servlet路径的方式包装默认serv

  • 我使用的是spring cloud Consult 1.0.0.m5和spring boot 1.3.2。spring cloud Consult用于连接到Consult代理的默认主机和端口是localhost:8500。我想改变这一点,但迄今为止我尝试的每一种方法都不尊重设置。 我查看了spring cloud Consult的源代码,并且ConsulProperties是在属性前缀spring