小编Omi*_*nus的帖子

sqlalchemy在桌面上搜索函数作为classmethod?

假设我有一个名为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)

python oop sqlalchemy

5
推荐指数
2
解决办法
4844
查看次数

sqlalchemy mixin,外键和关系

我在创建一个计划用于一堆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)

python sqlalchemy

5
推荐指数
1
解决办法
1293
查看次数

为类的 __init__ 方法编写单元测试

我对单元测试和编写/使用异常很陌生。我目前正在努力学习最佳实践并将它们集成到我的项目中。为了测试我一直在阅读的一些内容,我编写了一个简单的 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)

python unit-testing nose

5
推荐指数
1
解决办法
2100
查看次数

Python下午5:00之后

当一个函数运行时,我需要它来检查当前系统时间以及它是否在过去的下午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之后被发送到系统,则该订单需要被标记,以便在第二天之前不被"挑选".所以当订单被"导入"时需要运行该功能

python

3
推荐指数
1
解决办法
159
查看次数

将数据库记录写入postgres时运行shell脚本

postgres中是否有一些机制可以在写入数据库记录时触发shell脚本?我可以编写一个脚本来监视数据库和表,但在此之前我想确保没有"更好"的方法.

postgresql

2
推荐指数
1
解决办法
2681
查看次数

标签 统计

python ×4

sqlalchemy ×2

nose ×1

oop ×1

postgresql ×1

unit-testing ×1