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

在SQLAlchemy中,如何使用声明性语法定义事件以触发DDL?

巫培
2023-03-14
问题内容

此示例显示了如何将其与“非声明性”一起使用-http:
//docs.sqlalchemy.org/en/latest/core/ddl.html#sqlalchemy.schema.DDL

如何将其与ORM声明性语法一起使用?

例如,具有以下结构:

Base = declarative_base(bind=engine)     
class TableXYZ(Base):
    __tablename__ = 'tablexyz'

问题答案:

愚蠢的例子,但是认为这是您想要的,应该可以帮助您前进:

from sqlalchemy import event
from sqlalchemy.engine import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import create_session
from sqlalchemy.schema import Column, DDL
from sqlalchemy.types import Integer

Base = declarative_base()
engine = create_engine('sqlite:////tmp/test.db', echo=True)

class TableXYZ(Base):
    __tablename__ = 'tablexyz'
    id = Column(Integer, primary_key=True)

#event.listen(
#   Base.metadata, 'after_create',
#   DDL("""
#   alter table TableXYZ add column name text
#   """)

event.listen(
    TableXYZ.__table__, 'after_create',
    DDL("""
    alter table TableXYZ add column name text
    """)
)
Base.metadata.create_all(engine)

运行上面的结果-在添加的列中记下“名称文本”:

sqlite> .schema tablexyz
CREATE TABLE tablexyz (
    id INTEGER NOT NULL, name text, 
    PRIMARY KEY (id)
);

我使用声明性代码,并使用event.listen添加触发器和其他存储过程。似乎运作良好。



 类似资料:
  • 我正在使用maven项目进行UI自动化,我需要在多个环境和多个浏览器中运行一些测试。我已经创建并添加了pom.xml文件,并声明了其中的属性。但是当我通过终端执行它时,我得到了错误。我用的命令- 错误-[信息]扫描项目...[ERROR][ERROR]处理POM时遇到一些问题:[FATAL]不可解析POM d:\work\cucumber_projects\ui-automation-projec

  • 问题内容: 我希望能够用元数据注释我的类型和方法,并在运行时读取它们。 语言参考说明了如何声明属性用法,但实际上可以声明自己的属性吗? 阅读将需要某种反射机制,我根本无法在参考文献中找到这种反射机制,因此问题的第二部分可能是- 是否可能反射。如果这些功能在Swift中不可用,是否可以用Objective-C代码完成(但在Swift实例和类型上)? 相对不相关的注释:关于将什么建模为属性以及将哪些内

  • 本文向大家介绍写例子说明js中自定义事件的使用与触发相关面试题,主要包含被问及写例子说明js中自定义事件的使用与触发时的应答技巧和注意事项,需要的朋友参考一下 CustomEvent-MDN

  • 问题内容: 我已使用将事件附加到文本框。它工作正常。当我想通过另一个函数以编程方式触发事件时,出现了我的问题。 我该怎么做? 问题答案: 您可以在IE 8或更低版本上使用fireEvent,在大多数。要创建您要触发的事件,可以使用或取决于浏览器。 这是一段不言自明的代码(来自原型),它在上触发事件:

  • 问题内容: 我正在尝试做这样的事情: 但这给了我这个例外: 是否可以将阶段定义为外部闭包? 问题答案: 您不能在声明式管道之外定义阶段。声明性管道的主要目的是提供经过简化且自以为是的语法,因此您可以专注于应该做什么(通过使用一些可用的步骤)而不是如何去做。 如果您对更灵活的管道实现方式感兴趣,可以选择“ 脚本化管道”方法,该语法在语法方面并不严格-仅受Groovy和CPS执行模块的限制。 您的示例

  • 问题内容: 我已经阅读了有关此问题的所有答案,但似乎没有一种解决方案有效。 另外,我感觉到用特殊字符触发按键根本不起作用。有人可以验证谁这样做吗? 问题答案: 如果您想触发按键或按键事件,那么您要做的就是:

  • 我的Jenkinsfile由几个阶段构建而成,可以由调度程序或通过推送到Gitlab来触发。我想使用触发器源来跳过触发器的几个阶段。我如何识别哪个事件触发了作业?

  • 问题内容: 我试图让一个TextBox在每次击键时触发它的onTextChanged事件,而不是仅在失去焦点时才触发。我以为添加AsyncPostBackTrigger可以做到这一点,但仍然无法正常工作。我要做什么甚至有可能吗?代码如下: 问题答案: 使用javascript引发文本框控件时,您需要调用该函数。 但是,由于您的文本框位于更新面板中,因此,每当用户按下某个键时,该文本框都会重新呈现,