小编Lym*_*rga的帖子

使用SQLAlchemy中的bulk_update_mappings更新具有不同值的多个行

我有两张桌子Foo和Bar.我刚刚x在Bar表中添加了一个新列,它必须使用Foo中的值填充

class Foo(Base):
    __table__ = 'foo'
    id = Column(Integer, primary_key=True)
    x = Column(Integer, nullable=False)

class Bar(Base):
    __table__ = 'bar'
    id = Column(Integer, primary_key=True)
    x = Column(Integer, nullable=False)
    foo_id = Column(Integer, ForeignKey('foo.id'), nullable=False)
Run Code Online (Sandbox Code Playgroud)

一种直接的方法是迭代Bar中的所有行,然后逐个更新它们,但需要很长时间(Foo和Bar中有超过100k行)

for b, foo_x in session.query(Bar, Foo.x).join(Foo, Foo.id==Bar.foo_id):
    b.x = foo_x
session.flush()
Run Code Online (Sandbox Code Playgroud)

现在我想知道这是否是正确的方法 -

mappings = []
for b, foo_x in session.query(Bar, Foo.x).join(Foo, Foo.id==Bar.foo_id):
    info = {'id':b.id, 'x': foo_x}
    mappings.append(info)
session.bulk_update_mappings(Bar, mappings)
Run Code Online (Sandbox Code Playgroud)

那里没有太多的例子bulk_update_mappings.文档建议

所有存在且不属于主键的键都应用于UPDATE语句的SET子句; 必需的主键值应用于WHERE子句.

那么,在这种情况下id将在WHERE子句中使用,然后使用x字典中的值进行更新吧?

python mysql sqlalchemy

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

在NSIS中使用"ExecWait"时,禁止Windows命令输出

我试图抑制在NSIS中执行psql命令后弹出的输出窗口

ExecWait 'psql -U postgres -f "Path\To\File.sql" postgres'
Run Code Online (Sandbox Code Playgroud)

看完这个链接后我试过'> nul' .但这不起作用.

nsis

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

在Python中将时间戳舍入到最近的一天

在Python 2.7.2中,我获得了epoch以来的秒数:

sec_since_epoch = (date_obj - datetime(1970, 1, 1, 0, 0)).total_seconds()

现在我想将这些秒数舍入到最近的一天,例如:

datetime.fromtimestamp(sec_since_epoch)

对应于 datetime(2013, 12, 14, 5, 0, 0)

我想要新的时间戳对应 datetime(2013, 12, 14, 0, 0, 0)

我知道这种丑陋的做法,但是有一种优雅的方式吗?

python datetime

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

PostgreSQL迭代遍历行并使用自定义距离函数找到最接近的匹配

我是PostgreSQL的新手,我的问题类似于这里的一个:链接

例如,我有下表:

| id |       vector         |
|  1 |  { 1.43, 3.54, 5.55} |
|  2 |  { 4.46, 5.56, 4.55} |
|  3 |  { 7.48, 2.54, 4.55} |
|  4 |  { 2.44, 2.34, 4.55} |
Run Code Online (Sandbox Code Playgroud)

一个示例查询,类似于

SELECT * FROM my_table WHERE vector CLOSEST('{1.23, 4.43, 4.63}') 
Run Code Online (Sandbox Code Playgroud)

应该以排序的方式返回结果行,其中我使用自定义距离函数确定"最接近"的向量,例如calc_l2norm(double precision [],double precision []),它返回欧几里德距离.

postgresql

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

根据初始参数的值为argparse添加参数

我知道之前已经问过类似的问题,但我找不到一个确切的问题(另外,我无法理解'nargs'或'subparse'概念以及它如何适用于我的情况)

我想要的东西:

parser = argparse.ArgumentParser()
parser.add_argument('-mode', choices=['download', 'upload'], required=True)
parser.add_argument('-d', required=True)
args = parser.parse_args()
if args.mode == 'download':
    parser.add_argument('-f', required=True)

args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

所以-f参数是必须的,只有当-modedownload否则它不应该被解析

python command-line-arguments argparse

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

在 Flask 中处理 URL 中的 & 符号

我是使用 Flask 和 Jinja2 模板进行 Web 开发的新手。模板中 HTML 表格的一行中的一列是:

<td><a> href="/plot?label={{stats[0]}}">{{stats[0]}} </a></td>
Run Code Online (Sandbox Code Playgroud)

stats[0]是一个字符串变量,可能包含“&”,例如“Eggs & Spam”。现在在视图(views.py)中:

@app.route("/plot", methods = ["GET", "POST"])
@login_required
def on_plot():
    data = request.args
    label_name = data['label']
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到的data结果ImmutableMultiDict([(' Spam', u''), ('label', u'Eggs ')]) 是不正确的。相反我想要ImmutableMultiDict([('label', u'Eggs & Spam ')])

那么我该如何处理这个案子呢?我尝试这样做{{stats[0]|escape}},但没有成功。

python url-routing jinja2 flask

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

在 SQLAlchemy 中为列名使用别名

假设我有一个 SQLAlchemy 表,如下所示 -

class Employee(Base):
    id = Column(Integer, primary_key=True)
    employee_desgination = Column(String)
Run Code Online (Sandbox Code Playgroud)

我记得曾经浏览过文档,看到了一些使用别名作为长列名并使用较短的别名的方法。例如,在上面的表格中,而不是调用Employee.employee_designation我想使用Employee.emp_d或类似的东西。我无法再次找到该示例:/ 我认为您alias()在表定义中声明了 an ,但我不确定语法。

python sqlalchemy

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

x轴日期与nvd3中的y轴数据不对齐

我正在使用NVD3和Flask,我在x轴上有日期. 在此输入图像描述

如您所见,x轴上的线与点不一致.我在x轴上打印出日,月,年和小时.我不明白为什么日期不是等间隔,即即使我的x轴数据是'小时'也不一样,所以这些行分开超过"24小时".我认为这是导致问题的原因.

(编辑)我的代码是:

nv.addGraph(function() {
                        var chart = nv.models.lineChart();
                        chart.xAxis
                            .tickFormat(function(d) { return d3.time.format('%d %b %Y')(new Date(parseInt(d))) }
                );
                        chart.yAxis
                            .tickFormat(d3.format(',.02f'));
                        chart.tooltipContent(function(key, y, e, graph) {
                            var x = d3.time.format('%d %b %Y')(new Date(parseInt(graph.point.x)));
                            var y = String(graph.point.y);
                var y = String(graph.point.y);
                            tooltip_str = '<center><b>'+key+'</b></center>' + y + ' on ' + x;
                            return tooltip_str;
                        });
                        chart.showLegend(true);

                        d3.select('#lineChart svg')
                            .datum(data_lineChart)
                            .transition().duration(500)
                            .attr('width', 1200)
                .attr('height', 450)
                            .call(chart);

                    nv.utils.windowResize(chart.update);
                    return chart;
                });
Run Code Online (Sandbox Code Playgroud)

d3.js nvd3.js

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

在JQuery Image Picker工具中使用固定图像大小

我正在使用此工具http://rvera.github.io/image-picker/在Flask网络应用程序中选择图像.它工作正常,但我可以找到任何方式在显示时将所有图像设置为固定大小.

编辑:作者建议使用Masonry作为网格对齐的工具.它有参数,如列宽.任何人都可以举一个使用Masonry和Image-picker的例子吗?

html jquery flask jquery-masonry

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