小编lan*_*nzz的帖子

node-postgres:如何执行"WHERE col IN(<动态值列表>)"查询?

我正在尝试执行这样的查询:

SELECT * FROM table WHERE id IN (1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

问题是我要过滤的ID列表不是常量,每次执行时都需要不同.我还需要逃避id,因为它们可能来自不受信任的来源,尽管我实际上会逃避查询中的任何内容,无论源的可信度如何.

节点的Postgres似乎与绑定参数专门工作:client.query('SELECT * FROM table WHERE id = $1', [ id ]); 如果我有一个已知数量的值(client.query('SELECT * FROM table WHERE id IN ($1, $2, $3)', [ id1, id2, id3 ])),但是不能直接使用数组,这将有效:client.query('SELECT * FROM table WHERE id IN ($1)', [ arrayOfIds ])因为似乎没有任何特殊的数组参数处理.

根据数组中项目的数量动态构建查询模板,并将ids数组扩展到查询参数数组(在我的实际情况下,除了id列表之外还包含其他参数)似乎是不合理的负担.在查询模板中对id列表进行硬编码似乎也不可行,因为node-postgres不提供任何值转义方法.

这似乎是一个非常常见的用例,所以我的猜测是我实际上忽略了某些东西,而不是不可能将常见的IN (values)SQL运算符与node-postgres一起使用.

如果有人以比我上面列出的方式更优雅的方式解决了这个问题,或者如果我真的错过了关于node-postgres的内容,请帮忙.

node.js node-postgres

55
推荐指数
4
解决办法
3万
查看次数

Node.js http.createServer如何获取错误

我是node.js的新手,我正在尝试基本的东西.

我的代码是这样的

var http = require("http");
http.createServer(function(request, response) {
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Hello World");
    response.end();
}).listen(8888);
Run Code Online (Sandbox Code Playgroud)

这是一个问题 - 如何在调用createServer时看到抛出的异常(或抛出的事件)?我尝试过try/catch但它似乎不起作用.在模块的API中,我找不到任何对它的引用.我问,因为我意外地在一个端口上启动了一个服务器(8888),我得到的错误(在命令行中)是错误:EDDRINUSE,这很有用但是能够理解如何捕获错误会很好在节点中.

javascript node.js

16
推荐指数
3
解决办法
2万
查看次数

使用gettext翻译较长的文本(视图和电子邮件模板)

我正在开发一个多语言的PHP Web应用程序,我有很长的( - )文本,我需要用gettext进行翻译.这些是电子邮件模板(通常很短,但仍有几行)和视图模板的一部分(较长的描述性文本块).这些文本将包括一些简单的HTML(强调粗体/斜体,可能是这里或那里的链接).模板是PHP脚本,其输出被捕获.

问题是gettext对于处理较长的文本似乎非常笨拙.较长的文本通常会比短文本有更多的变化 - 我可以更改msgid并确保在所有翻译中更新它(当msgid很长时可能是很多工作并且非常容易出错),或者我可以保留msgid保持不变并仅修改翻译(这会在模板中留下误导性的过时文本).另外,我已经看到了反对在gettext字符串中包含HTML的建议,但是避免它会将一个自然文本分成很多块,这将是翻译和重新组合的更大噩梦,我也看到了建议不必要的将gettext字符串拆分成单独的msgids.

我看到的另一种方法是完全忽略这些较长文本的gettext,并为每个语言环境分离外部子模板中的那些块,并且只包括当前语言环境的那个.缺点是我将gettext .po文件和位于完全不同位置的单独模板之间的转换工作分开.

由于此应用程序将在未来用作其他应用程序的起点,因此我试图提出长期的最佳方法.在这种情况下,我需要一些关于最佳实践的建议.你是如何实施类似案件的?什么结果发挥作用,结果是一个坏主意?

email templates localization gettext longtext

13
推荐指数
2
解决办法
2761
查看次数

如何获取python字典中的第一个值

我有一个这样的字典:

myDict = {  
    'BigMeadow2_U4': (1609.32, 22076.38, 3.98),  
    'MooseRun': (57813.48, 750187.72, 231.25),  
    'Hwy14_2': (991.31, 21536.80, 6.47)  
}
Run Code Online (Sandbox Code Playgroud)

如何获得我的指示中每个项目的第一个值?

我想最后一个清单:

myList = [1609.32,57813.48,991.31]
Run Code Online (Sandbox Code Playgroud)

python dictionary list

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

是否有像*.oft这样的电子邮件模板文件,可以在所有电子邮件程序中打开?

目前我正在编写一个充满数据的Web界面.我想将此数据导出为电子邮件模板,以便您可以在以后编辑电子邮件.是否有*.oft等格式,所有电子邮件程序都可以读取?

我知道HTML(<a href="mailto:[...]">)中有这样的功能.由于电子邮件文本很长,我想附加文件,这似乎不是一个好的解决方案.

有人能帮我吗?

php email templates

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

MySQL 使用具有和分组依据更新与选择相同的表

我有一个 Select 查询,它返回时间少于 8 天的所有会话的会话 ID。它工作得很好!

SELECT sessionID FROM session WHERE sessionStatus = 'open' GROUP BY sessionID HAVING MAX(refTime) <= 8;
Run Code Online (Sandbox Code Playgroud)

但是,我正在尝试更新表,以便会话 ID 小于 8 天的每条记录都将其 sessionStatus 更改为“已关闭”。从stackoverflow我知道我无法更新我也从中选择的表,并且拥有和分组依据是使这变得更加复杂的agerate函数。

我试过这个,但没有骰子!

UPDATE session 
SET sessionStatus='closed'
WHERE sessionID = (select * from (SELECT MAX(sessionID) FROM session where sessionStatus = 'open') as t);
Run Code Online (Sandbox Code Playgroud)

我真的很感激任何帮助!

mysql

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

SQL ROW_NUMBER和排序问题

在SQL 2005/2008数据库中,我们有表BatchMaster.列:RecordId bigint - autoincremental id,BatchNumber bigint - 唯一的非聚集索引,BatchDate).我们有sproc返回此表中的分页数据.该sproc适用于大多数客户端,但在一个SQL服务器实例中,我们遇到记录顺序问题.一般来说,我们这样做

select * from
(
    select row_number() over (order by bm.BatchDate desc, bm.BatchNumber desc) as Row,
    *
    from dbo.BatchMaster bm with (nolock)
)
where Row between @StartingRow and @EndgingRow
Run Code Online (Sandbox Code Playgroud)

因此,正如您可以从上面的脚本中注意到的那样,我们希望返回按BatchDate和BatchNumber排序的记录.对于我们的一位客户来说,这不会发生: 在此输入图像描述

记录顺序错误.另外,请注意第一列(行),它不是按升序排列的.

有人能解释为什么这样吗?

sql sql-server sorting row-number sql-order-by

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

在Mysql查询中划分

我有2个不同的查询,它将返回值:1502.00和6

SELECT replace(CURRENT_VALUE,'$','') curVal
FROM form_attributes_values
WHERE TEST_ID=2
AND ATTRIBUTE_ID = (
    SELECT ATTRIBUTE_ID
    FROM form_attributes
    WHERE FORM_ID=6
    AND FORM_FIELD_NAME='REGRINDABLECUTTERCOST'
)
Run Code Online (Sandbox Code Playgroud)

SELECT replace(CURRENT_VALUE,'$','') curVal
FROM form_attributes_values
WHERE TEST_ID=2
AND ATTRIBUTE_ID = (
    SELECT ATTRIBUTE_ID
    FROM form_attributes
    WHERE FORM_ID=6
    AND FORM_FIELD_NAME='REGRINDSPOSSIBLE'
)
Run Code Online (Sandbox Code Playgroud)

我试图执行分区query1/query2(1502.00/6),它应该返回值 250.333333

但我得到的价值就像 0.16666666666666

以下是尝试过的类型:类型1:

select (a.curVal / b.curVal) as final_count
from (
    SELECT replace(CURRENT_VALUE,'$','') curVal
    FROM form_attributes_values
    WHERE TEST_ID=2 AND ATTRIBUTE_ID = (
        SELECT ATTRIBUTE_ID
        FROM form_attributes
        WHERE FORM_ID=6
        AND FORM_FIELD_NAME='REGRINDABLECUTTERCOST'
    )
) a,
(
    SELECT replace(CURRENT_VALUE,'$','') …
Run Code Online (Sandbox Code Playgroud)

mysql division

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

django tables2创建带链接的额外列

我试图在我的一个表中添加一个额外的列,将url添加到另一个页面.

我的表:

class ItemTable(tables.Table):
    edit = tables.LinkColumn('item_edit', args=[A('pk')])
    class Meta:
        model = Item
        fields = ('name', 'slot', 'klass', 'rarity', 'price')
Run Code Online (Sandbox Code Playgroud)

我的网址:

url(r'^admin/item/edit/(?P<item_id>\d+)/$', views.item_edit, name='item_edit')
Run Code Online (Sandbox Code Playgroud)

现在有了这个,我得到了我的表,但是最后一列(编辑)只有破折号+当我点击标题时页面崩溃了.

我一直在看http://django-tables2.readthedocs.org/en/latest/#django_tables2.columns.LinkColumn ,我不确定我哪里出错了

django hyperlink django-tables2

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

使用phpDocumentor记录类常量组

假设我有一个带参数的方法,其有效值被声明为类常量(think PGSQL_ASSOC/ PGSQL_NUM/ PGSQL_BOTH).还有另一种方法,使用类似的参数,使用另一组类常量.有没有办法向phpDocumentor描述每组常量属于一个逻辑组的替代?将它们记录在组中是有用的,并且能够引用方法文档中的特定组.使用docblock模板不会削减它,因为模板的简短描述会被忽略(添加无用的混乱),而模板的长描述会附加到常量特定的描述中,从而产生一种向后的措辞(例如"BAR_MODE_1"这个和那个.Foo :: bar()的操作模式",而不是"Foo :: bar()的操作模式:BAR_MODE_1执行此操作.").

例:

class Foo {

    // this group of constants are valid modes for the bar() method
    const BAR_MODE_1 = 1;
    const BAR_MODE_2 = 2;
    const BAR_MODE_3 = 3;

    /**
     * @param int see Foo::BAR_MODE_* constants
     */
    public function bar($mode) { ... }

    // this group of constants are valid modes for the baz() method
    const BAZ_MODE_1 = 1;
    const BAZ_MODE_2 = 2;
    const BAZ_MODE_3 = 3;

    /**
     * @param …
Run Code Online (Sandbox Code Playgroud)

php phpdoc

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