python–SQLAlchemy声明中的基于对象的默认值

python–SQLAlchemy声明中的基于对象的默认值,第1张

概述使用SQLAlchemy,可以为每个函数添加默认值.据我所知,这也可能是一个可调用的(没有任何参数或可选的ExecutionContext参数).现在在一个声明性场景中,我想知道是否有可能有一个默认函数,该函数是使用正在存储的对象调用的.即可能是这样的:Base = sqlalchemy.ext.declarative.declarative_base()

使用sqlAlchemy,可以为每个函数添加默认值.据我所知,这也可能是一个可调用的(没有任何参数或可选的ExecutionContext参数).

现在在一个声明性场景中,我想知道是否有可能有一个默认函数,该函数是使用正在存储的对象调用的.即可能是这样的:

Base = sqlalchemy.ext.declarative.declarative_base()class BaseEntity(Base):    value = Column('value',String(40),default=BaseEntity.gen_default)    def gen_default(self):        # do something with self,for example        # generate a default value using some other data        # attached to the object        return self.default_value

这样的事情可能吗?或者我必须以某种方式为此设置一个插入前挂钩(如何?)?最佳答案before_insert在这里记录:

http://docs.sqlalchemy.org/en/rel_0_7/orm/events.html#sqlalchemy.orm.events.MapperEvents.before_insert

这里的例子:

http://docs.sqlalchemy.org/en/rel_0_7/orm/events.html#mapper-events

from sqlalchemy import *from sqlalchemy.orm import *from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import eventBase= declarative_base()class A(Base):    __tablename__ = "a"    ID = Column(Integer,primary_key=True)    data = Column(String)    otherdata = Column(String)@event.Listens_for(A,"before_insert")def gen_default(mapper,connection,instance):    instance.data = "Some default %s" % instance.otherdatae = create_engine("sqlite://")Base.Metadata.create_all(e)a = A(otherdata="some other data")s = Session(e)s.add(a)s.commit()assert a.data == "Some default some other data"
总结

以上是内存溢出为你收集整理的python – SQLAlchemy声明中的基于对象的默认值全部内容,希望文章能够帮你解决python – SQLAlchemy声明中的基于对象的默认值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1205562.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存