假设我有一个名为Customer的类,它在sqlalchemy中定义以表示customer表.我想写一个搜索方法,以便......
results = Customer.search(query)
Run Code Online (Sandbox Code Playgroud)
将根据方法返回结果.我想以@classmethod的身份做到这一点吗?
@classmethod
def search(cls,query):
#do some stuff
return results
Run Code Online (Sandbox Code Playgroud)
我可以使用cls代替DBSession.query吗?
DBSession.query(Customer).filter(...)
cls.query(Customer).filter(...)
Run Code Online (Sandbox Code Playgroud) 我在创建一个计划用于一堆sqlalchemy声明式类的简单mixin时遇到麻烦。基本思想是我想在多个表上存储一个创建/修改时间戳,并创建/修改用户。mixin位于其自己的文件(global_mixins.py)中,并且该类将导入每个需要mixin的模型文件中。当我运行数据导入时,代码下方出现错误。
class TimeUserMixin(object):
create_time = Column(DateTime,default=datetime.datetime.now,nullable=False)
modify_time = Column(DateTime,default=datetime.datetime.now,
onupdate=datetime.datetime.now,nullable=False)
@declared_attr
def create_user_id(cls):
return Column(Integer,ForeignKey('tg_user.user_id'),
default=cls.get_user_id,nullable=False)
@declared_attr
def modify_user_id(cls):
return Column(Integer,ForeignKey('tg_user.user_id'),
default=cls.get_user_id,onupdate=cls.get_user_id,nullable=False)
@declared_attr
def create_user(cls):
return relation('User',primaryjoin='%s.create_user_id == User.user_id'%cls.__name__)
@declared_attr
def modify_user(cls):
return relation('User',primaryjoin='%s.modify_user_id == User.user_id'%cls.__name__)
@classmethod
def get_user_id(cls):
#will eventually return user id if logged in or a generic system user.
return 1
Error(DETAIL: Key (create_user_id)=(1) is not present in table "tg_user".)
Run Code Online (Sandbox Code Playgroud) 我对单元测试和编写/使用异常很陌生。我目前正在努力学习最佳实践并将它们集成到我的项目中。为了测试我一直在阅读的一些内容,我编写了一个简单的 Contracts 模块。下面是合约类的初始化,它有几个相互依赖的参数。
我将/应该如何根据其参数依赖性为 init 方法编写测试。
提前致谢!
def __init__(self, code, description ,contract_type,
start_date ,end_date ,reminder_date,
customer=None, isgroup=False, vendor=None,
discount_perc=None):
contract_types = ['item','vendor']
self.code = code
self.description = description
self.contract_type = contract_type
self.start_date = start_date
self.end_date = end_date
self.reminder_date = reminder_date
if contract_type not in contract_types:
raise AttributeError("Valid contract types are 'item' & 'vendor'")
if isgroup:
if customer:
raise AttributeError("Group contracts should not have 'customer' passed in")
self.is_group_contract = True
else:
if customer:
self.add_customer(customer)
else:
raise AttributeError('Customer required for non group …Run Code Online (Sandbox Code Playgroud) 当一个函数运行时,我需要它来检查当前系统时间以及它是否在过去的下午5点做某事.
current_time = datetime.datetime.now()
if current_time > {code to represent 17:00 hours}:
do stuff
Run Code Online (Sandbox Code Playgroud)
编辑以便澄清:订单被发送到我的软件中,该软件处理配送中心的订单拣配/包装.如果订单在5:00之后被发送到系统,则该订单需要被标记,以便在第二天之前不被"挑选".所以当订单被"导入"时需要运行该功能
postgres中是否有一些机制可以在写入数据库记录时触发shell脚本?我可以编写一个脚本来监视数据库和表,但在此之前我想确保没有"更好"的方法.