小编Jos*_*shi的帖子

PostgreSQL参数化表函数中的Order By/Limit

我有一个sql函数,它执行一个简单的sql select语句:

CREATE OR REPLACE FUNCTION getStuff(param character varying)
  RETURNS SETOF stuff AS
$BODY$
    select *
    from stuff
    where col = $1
$BODY$
  LANGUAGE sql;
Run Code Online (Sandbox Code Playgroud)

现在我调用这个函数是这样的:

select * from getStuff('hello');
Run Code Online (Sandbox Code Playgroud)

如果我需要订购并限制结果order bylimit条款,我有哪些选择?

我想这样的查询:

select * from getStuff('hello') order by col2 limit 100;
Run Code Online (Sandbox Code Playgroud)

效率不高,因为表中的所有行都stuff将由函数返回,getStuff然后按限制排序和切片.

但即使我是对的,如何通过sql语言函数的参数传递顺序也没有简单的方法.只能传递值,而不能传递sql语句的一部分.

另一种选择是用plpgsql语言创建函数,在那里可以构造查询并通过它来执行EXECUTE.但这也不是一个非常好的方法.

那么,有没有其他方法可以实现这一目标?或者你会选择什么选择?在函数外部订购/限制,还是plpgsql?

我正在使用postgresql 9.1.

编辑

我修改了CREATE FUNCTION语句,如下所示:

CREATE OR REPLACE FUNCTION getStuff(param character varying, orderby character varying)
  RETURNS SETOF stuff AS
$BODY$
    select t.* …
Run Code Online (Sandbox Code Playgroud)

sql database postgresql dynamic-sql plpgsql

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

Python:用于展平包含另一个生成器的生成器的函数

我想知道如何编写python函数,它可以展平生成器,生成另一个生成器或迭代(也可以产生另一个生成器/迭代......可能是无限的).

这是一个例子:

gen(gen(1,2,3), gen(4,5,6), [7,8,9], [gen(10,11,12), gen(13,14,15)])

注意:gen- 表示生成器对象,括号之间的内容gen是生成器生成的数据gen.

"扁平化"后的预期结果: gen(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)

扁平功能也必须返回发电机!(因为否则,先前使用的发电机将毫无意义).

请注意,我使用的是python 3.

谢谢!

python generator python-3.x

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

DOJO使用xdomain定制模块开发

我有这种情况:

  • 在example.com上运行的应用程序服务器 - 这是从m加载html页面的地方

  • 用于在static.example.com上提供静态文件的服务器 - 这是从(css,graphics,scripts)加载的静态文件的位置

我想在我的网站上运行DOJO和我的自定义模块.问题是我需要xdomain构建我想要使用的一切(dojo,dijit,dojox,自定义模块).没关系,为生产环境创建xdomain构建,但我需要将这两个域拆分用于开发.

好的,我可以使用xdomain loader预构建dojo,dijit,dojox.但是,不断重建自定义模块以进行开发可能不是正确的方法.

那么,你推荐我什么?或者,构建器究竟做了什么,以实现模块加载xdomain?我可以创建模块直接工作xdomain吗?

谢谢

javascript dojo

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

Dijit.Dialog中的Dojo/Dijit BorderContainer

我试图以编程方式创建这样的布局:在此输入图像描述

我正在使用dojo 1.7,布局初始化可能存在问题.这是我的尝试.

谢谢你的帮助

layout dojo

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

来自 sqlalchemy 的 psycopg2 register_composite

当我使用 sqlalchemy 连接到 postgresql 数据库时,是否可以以某种方式使用来自 psycopg2 的函数register_composite

我的问题是我希望 SQLAlchemy 处理我在 postgresql 中创建的自定义复合类型,如下所示:

CREATE TYPE card AS (value int, suit text);
Run Code Online (Sandbox Code Playgroud)

Sqlalchemy 将这种类型的值作为字符串返回给我,我想了解一下我的新类型 sqlalchemy。如果在 SQL alchemy ORM 中找到了一些关于创建自定义复合类型的信息,但我只使用 SQLAlechemy Core API(而不是 ORM)并且 sqlalchemy IRC 上的某个人告诉我 psycopg 应该为我做这件事。

我会很高兴有任何建议,这将解决这个问题。

谢谢乔希

python postgresql sqlalchemy psycopg2 python-3.x

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

PLY yacc解析IF-ELSE IF-ELSE嵌套语句

有人可以帮助我为嵌套的if语句编写正确的语法规则吗?用我的语言,我可以编写如下结构:

(IF CONDITION)
    some statements
    (IF CONDITION)
        some statements 
    (ELSE IF CONDITION) 
        some statements
    (ELSE IF CONDITION) 
        some statements
    (ELSE IF CONDITION) 
        some statements 
    (ELSE) 
        some statements
    (END) 
    some statements 
(ELSE IF CONDITION) 
    some statements 
(ELSE) 
    some statements 
(END)
Run Code Online (Sandbox Code Playgroud)

我写词法器时,左右括号分别是RULE_OPENRULE_CLOSE标记,“ IF”是IF标记,“ END”是END标记,“ ELSE”是ELSE标记,“ CONDITION”是CONDITION标记。

假设“某些语句”可能是我的语言(例如通用编程语言)所允许的任何内容。重要的是,可能无限嵌套嵌套IF语句。

希望这很清楚,如果我解释不好,请告诉我。

无论我如何尝试。我总是遇到shift / reduce冲突,而且解析器不接受正确的输入。

即使,我已经成功编写了没有else-if的规则。当我为else-if添加规则时,代码对我来说变得非常复杂。

下面是我没有其他部分的成功方法(我只列出了相关规则):

statements: statement

statements: statements statement

statement: code
| data_out
| rule

rule: inline_if_statement
| block_if_statement

block_if_statement: RULE_OPEN …
Run Code Online (Sandbox Code Playgroud)

python parsing yacc ply

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

uWSGI,cherrypy和threading

前言:我想把这些问题分成小问题,但显然,我错过了一些难题,对我来说似乎不可能.

我使用cherrypy内置的WSGI服务器开发了我的樱桃应用程序.我天真地假设,到时候,我将能够使用创建的WSGI Application类并使用任何符合WSGI的服务器进行部署.

我使用这篇博文来创建我自己的(但非常相似)的cherrypy插件和工具,以便在http请求期间使用SQLAlchemy连接到数据库.

我希望任何服务器都能像Cherrypy的内置服务器一样工作:

  1. 主进程将产生X线程以满足X并发请求
  2. 我的引擎插件将使用连接池= X创建SQLalchemy引擎(因此任何请求都将具有其连接)
  3. 在请求到达时,我的工具将从池提供sql炼金术连接

此流程与uWSGI不匹配(只要我理解).

application.py在uWSGI配置中分配了我的.这个文件看起来像这样:

cherrypy.tools.db = DbConnectorTool()
cherrypy.engine.dbengine = DbEnginePlugin(cherrypy.engine, settings.database)
cherrypy.config.update({
    'engine.dbengine.on': True
})

from myapp.application import Application
root = Application(settings)
application = cherrypy.Application(root, script_name='', config=settings)
Run Code Online (Sandbox Code Playgroud)

我用这个application.py安装我的申请,建于当我开发和测试其服务器CherryPy的.

问题是uWSGI本身并没有创建任何线程,而且我的SQLAlchemy插件没有使用它,因为没有cherrypy.engine创建.

uWSGI是否支持使用线程为多个并发请求提供服务的线程?我能在我的网站上启动这些线程application.py吗?uWSGI会理解它并将这些线程用于并发请求吗?怎么能这样呢?我认为cherrypy可以以某种方式使用,或不?那我的SQLAlchemy插件怎么样,我cherrypy.engine只能在仅使用WSGI时启动cherrypy.Application

任何可以帮助我的帮助或信息将不胜感激.

编辑:

我的uWSGI配置:

<uwsgi>
    <socket>127.0.0.1:9001</socket>
    <master/>
    <daemonize>/var/log/uwsgi/app.log</daemonize>
    <logdate/>
    <threads/>
    <pidfile>/home/web/uwsgi.pid</pidfile>
    <uid>uwsgi</uid>
    <gid>uwsgi</gid>
    <workers>2</workers>
    <harakiri>90</harakiri>
    <harakiri-verbose/>
    <home>/home/web/</home>
    <pythonpath>/home/web/instance</pythonpath>
    <module>core.application</module>
    <no-orphans/>
    <touch-reload>/home/web/uwsgi-reload-web</touch-reload>
</uwsgi>
Run Code Online (Sandbox Code Playgroud)

python wsgi cherrypy uwsgi

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