小编Dol*_*gan的帖子

通过聚合函数中其他列的(第一个值)排序不同的列值

我正在尝试根据另一列的值来排序某些不同聚合文本的输出顺序,例如:

string_agg(DISTINCT sometext, ' ' ORDER BY numval)
Run Code Online (Sandbox Code Playgroud)

但是,这会导致错误:

错误:在与DISTINCT聚合时,ORDER BY表达式必须出现在参数列表中

我确实理解为什么会这样,因为如果numval两个重复值中的顺序不同,则排序将是"不明确的" ,而另一个重复值之间的排序将是"不明确的" .

理想情况下,我想按照第一次出现/最低顺序排序它们,但是在我的数据中,不明确的情况实际上是非常罕见的(它主要是顺序重复的值,我想用它除去DISTINCT)我最终不要特别关心他们的订购,并且会对像MySQL这样的东西感到满意,GROUP_CONCAT(DISTINCT sometext ORDER BY numval SEPARATOR ' ')尽管它很邋..

我希望Postgres的一些扭曲是必要的,但我真的不知道最有效/简洁的方法是什么.

sql postgresql distinct sql-order-by aggregate-functions

11
推荐指数
3
解决办法
5840
查看次数

将spawn()的stdout/stderr重定向到Ruby中的字符串

我想使用spawn(用于多个并发子进程)在Ruby中执行外部进程,并将stdout或stderr收集到一个字符串中,其方式与Python的子进程Popen.communicate()相似.

我试图重定向:出/:宁可到一个新的StringIO对象,而是产生一个ArgumentError,暂时重新定义$ stdxxx会混淆了子进程的输出.

ruby

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

如何在元类中使用多重继承?

我正在尝试Flask-RESTFUL使用注册表模式注册我定义的所有资源.

from flask_restful import Resource

class ResourceRegistry(type):

    REGISTRY = {}

    def __new__(cls, name, bases, attrs):
        new_cls = type.__new__(cls, name, bases, attrs)
        cls.REGISTRY[new_cls.__name__] = new_cls
        return new_cls

    @classmethod
    def get_registry(cls):
        return dict(cls.REGISTRY)


class BaseRegistered(object):
    __metaclass__ = ResourceRegistry


class DefaultResource(BaseRegistered, Resource):

    @classmethod
    def get_resource_name(cls):
        s = re.sub('(.)([A-Z][a-z]+)', r'\1-\2', cls.__name__)
        return '/' + re.sub('([a-z0-9])([A-Z])', r'\1-\2', s).lower()
Run Code Online (Sandbox Code Playgroud)

当整个事情发布时,我得到以下内容:

TypeError: Error when calling the metaclass bases
metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of …
Run Code Online (Sandbox Code Playgroud)

python metaprogramming flask flask-restful

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

提取 SWIG 包装的 C++ 实例/指针以在 Cython 中使用

我有一个来自 SWIG 包装的 C++ 库的类的实例,我想从中提取其引用,以便能够在 Cython 文件中使用它,在该文件中,我通过使用直接链接到同一个 C++ 库更轻量级的自制 Cython 同类包装器。

我知道这不会像访问某些隐藏属性那么容易,但我想 SWIG 或 CPython 中可能有一些函数,如果从 Cython 中链接到它(也许是某些 PyObject_*?),可能会这样做。

不幸的是,我对 SWIG 或 CPython 内部的了解不够,无法知道如何做到这一点,或者在不修改 SWIG 绑定的源代码的情况下这是否真的可行。

c++ python swig cpython cython

4
推荐指数
1
解决办法
931
查看次数