小编non*_*gon的帖子

动态创建一组 SQLAlchemy 表

我有一个用 SQLAlchemy 声明定义的简单表:

Base = declarative_base()
class MyTable(Base):
    __tablename__ = 'mytable1'
    row_id = Column(INT, primary_key=True)
    another_column = Column(CHAR(10))
Run Code Online (Sandbox Code Playgroud)

我想创建一组具有以下名称的表:

table_names = ('mytable1', 'mytable2', 'mytable3', 'mytable4')
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来创建这组表,所有表都具有相同的列定义(但每个都有自己的名称),而无需重复表定义?

python sqlalchemy

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

无法从cron作业查询upstart服务状态

我正在运行Ubuntu 14,我将以下行添加到我的crontab:

*/1 * * * * : testing; /usr/sbin/service my-service status > ~/status 2>&1
Run Code Online (Sandbox Code Playgroud)

在下一分钟滚动之后,我在〜/ status中看到了这个:

my-service: unrecognized service
Run Code Online (Sandbox Code Playgroud)

如果我从终端运行它,它确实识别该服务:

~$ /usr/sbin/service my-service status
my-service stop/waiting
Run Code Online (Sandbox Code Playgroud)

我想知道什么可能导致我的服务在cron作业的环境中无法识别,而不是在我的环境中ssh到服务器时?

ubuntu cron upstart

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

具有最大y的mongo聚合字段x

我有一些文件,例如:

{_id: 1, kind: 'cow', nickname: 'bess', weight: 145}
{_id: 2, kind: 'cow', nickname: 'babs', weight: 130}
{_id: 3, kind: 'horse', nickname: 'boris', weight: 140}
{_id: 4, kind: 'horse', nickname: 'gnoris', weight: 110}
Run Code Online (Sandbox Code Playgroud)

我想按“种类”字段对它们进行分组,然后返回每个组中体重最大,组中最大体重和组中动物数量的动物的昵称,从而返回:

{'kind': 'cow', 'nickname': 'bess', 'max_weight': 145, 'count': 2}
{'kind': 'horse', 'nickname': 'boris', 'max_weight': 140, 'count': 2}
Run Code Online (Sandbox Code Playgroud)

我可以看到如何使用以下mongo聚合返回每个组的最大权重和计数:

db.aggregate([
    {'$group': {'_id': '$kind',
                'max_weight': {'$max': '$weight'},
                'count': {'$sum': 1}}}
])
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以使此聚合返回每个组中最重的动物的对应昵称?

mongodb mongodb-query aggregation-framework

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

专门针对bool + integral +浮点返回类型的模板

我想编写一个函数模板,它返回各种类型的随机变量(bool,char,short,int,float,double,以及这些的无符号版本).

我无法使用最新的C++ 11标准库看到如何执行此操作,因为我需要使用uniform_int_distribution或uniform_real_distribution.我以为我可以专门化模板:

template<typename T>
T randomPrimitive() { std::uniform_int_distribution<T> dst; std::mt19937 rng; return dst(rng); }

template<>
bool randomPrimitive<bool>() { std::uniform_int_distribution<signed char> dst; std::mt19937 rng; return dst(rng) >= 0 ? true : false; }

template<typename T>
typename std::enable_if<std::is_floating_point<T>::value, T>::type randomPrimitive() { std::uniform_real_distribution<T> dst; std::mt19937 rng; return dst(rng); }
Run Code Online (Sandbox Code Playgroud)

在Visual Studio 2012 Update 3下,这给出了:

错误C2668:'`anonymous-namespace':: randomPrimitive':对重载函数的模糊调用

当我尝试编译时:

randomPrimitive<float>();
Run Code Online (Sandbox Code Playgroud)

有没有办法专门化一个函数模板,所以我可以为bool,其他整数类型和浮点类型编写三种不同的实现?

c++ c++11

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

通过 Python 通过一次 API 调用更新 Shopify 价格

我正在使用 Shopify Python API,并且我想通过一次 API 调用来更新我的一款产品的价格。这是因为他们的 API 受到限制,并且我正在更新大量项目,因此 API 调用减少 50% 将显着提高我的整体运行时间。

现在我正在这样做:

product = shopify.Product.find(shopify_id)
product.variants[0].price = new_price
product.save()
Run Code Online (Sandbox Code Playgroud)

这需要两次 API 调用。有没有办法在给定 Shopify ID 的情况下通过单个 API 调用来更新价格?我尝试了这个(我在论坛上被告知,为产品设置价格会更新所有变体):

product = shopify.Product(dict(id=shopify_id, price=new_price))
product.save()
Run Code Online (Sandbox Code Playgroud)

save() 返回 True,但价格没有更新。然后我尝试了这个:

product = shopify.Product(dict(id=shopify_id, price=new_price))
product.variants = [shopify.Variant()]
product.variants[0].price = new_price
product.save()
Run Code Online (Sandbox Code Playgroud)

并且 save() 返回 False,product.errors.full_messages() 返回 ['选项不唯一']。

python shopify

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

pymongo 光标“触摸”以避免超时

我需要从 mongo (v3.2.10) 集合(使用 Pymongo 3.3.0)中获取大量(例如 1 亿个)文档并对其进行迭代。迭代需要几天时间,我经常遇到由于超时游标而导致的异常。

在我的情况下,我需要在迭代时睡眠不可预测的时间。例如,我可能需要: - 获取 10 个文档 - 睡眠 1 秒 - 获取 1000 个文档 - 睡眠 4 小时 - 获取 1 个文档等

我知道我可以:

  • 完全禁用超时,但如果可能的话,我想避免这种情况,因为如果我的代码完全停止运行,很高兴为我清理游标
  • 减少我的光标的batch_size,但是如果例如我需要像上面的例子那样睡4个小时,这将无济于事

似乎一个不错的解决方案是“触摸”光标以使其保持活动状态。因此,例如,我会将长时间的睡眠分成较短的间隔,并在每个间隔之间触摸光标。

我没有看到通过 pymongo 做到这一点的方法,但我想知道是否有人确切知道这是否可行。

mongodb pymongo

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

在Python中生成一个没有分叉的进程

我正在使用Python(2.7)和pymongo(3.3),我需要生成一个子进程来异步运行一个作业.不幸的是pymongo不像这里描述的那样是fork-safe (我需要在生成子进程之前与db进行交互).

我运行了一个实验subprocess.Popen(使用shellset to True然后False)和multiprocessing.Process.据我所知,他们都分叉父进程来创建子进程,但只multiprocessing.Process导致pymongo打印它已检测到分叉进程的警告.

我想知道这样做的pythonic方式是什么.似乎也许os.system会为我做这件事,但subprocess被描述为一个预定的替代品,os.system所以我想知道我是否遗漏了一些东西.

python subprocess python-2.x pymongo python-multiprocessing

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

多个 &lt;script&gt; 标签,每个标签都有自己的作用域

我需要以编程方式生成多个<script>标签,除了参数不同之外,每个标签几乎相同。例如:

<script>
    function foo() { console.log('1'); }
    /* lots of very complicated code which calls foo() */
</script>

<script>
    function foo() { console.log('2'); }
    /* lots of very complicated code which calls foo() */
</script>
Run Code Online (Sandbox Code Playgroud)

在此示例中,第一个脚本的参数值为“1”,因此其生成的代码将“1”打印到控制台,而第二个脚本的参数值为“2”。

我知道到目前为止这个问题会冒犯许多优秀程序员的敏感性。它当然大大简化了,出于这个问题范围之外的原因,我需要这样做。

据我了解,这些<script>标签将共享全局范围,因此它们的foo实现会发生冲突。一种解决方法是分别命名它们,例如foo1foo2。实际上我有很多这样的功能,我想知道是否有更好的方法。

是否有一种好方法可以将每个<script>标签包含在其自己的范围内,以便foo实现不冲突?我更喜欢在没有任何单独的库或预处理等的情况下执行此操作 - 仅使用本机 JavaScript。

javascript

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

mongodb内存中排序与投影或限制

我正在对 MongoDB(在我的例子中是 3.2)运行一个排序查询,我得到:

OperationFailed: Sort operation used more than the maximum 33554432 bytes of RAM.
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用索引来避免这种情况。就我而言,这是一个我很少运行的操作,因此索引的开销没有意义(如果此操作花费很长时间并消耗大量资源也没关系)。我很确定我最终会使用聚合来allowDiskUse解决这个问题,但我对某些事情感到好奇。

我很好奇使用投影是否可以减少内存中排序所需的内存占用。同样,我想知道 a 是否limit()可以减少此占用空间(因为排序只需要将顶部/底部 N 保留在内存中)。

sorting mongodb

0
推荐指数
1
解决办法
5422
查看次数