小编kol*_*pto的帖子

如果仅用于原始SQL查询,SQLAlchemy仍然建议使用吗?

使用Flask,我很想知道SQLAlchemy是否仍然是使用原始SQL(直接SELECT x FROM table WHERE ...)而不是使用ORM 查询数据库的最佳方式,或者是否有更简单但更强大的替代方案?

谢谢你的回复.

python orm sqlalchemy flask

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

使用sqlalchemy的复杂查询(子查询,窗口函数)

我正在尝试使用sqlalchemy ORM编写以下sql查询:

SELECT * FROM
   (SELECT *, row_number() OVER(w)
    FROM (select distinct on (grandma_id, author_id) * from contents) as c
    WINDOW w AS (PARTITION BY grandma_id ORDER BY RANDOM())) AS v1
WHERE row_number <= 4;
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所做的:

s = Session()

unique_users_contents = (s.query(Content).distinct(Content.grandma_id,
                                                  Content.author_id)
                         .subquery())

windowed_contents = (s.query(Content,
                             func.row_number()
                             .over(partition_by=Content.grandma_id,
                                   order_by=func.random()))
                     .select_from(unique_users_contents)).subquery()

contents = (s.query(Content).select_from(windowed_contents)
            .filter(row_number >= 4)) ##  how can I reference the row_number() value?

result = contents
for content in result:
    print "%s\t%s\t%s" % (content.id, content.grandma_id,
                          content.author_id)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,它几乎是建模的,但我不知道如何row_number() …

python sql sqlalchemy

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

如何在诗歌中使用 Cython?

我的项目中有一个文件,出于性能原因,我想对其进行编译:

mylibrary/myfile.py

如何用 Poetry 实现这一目标?

python cython python-poetry

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

如何使用 alembic 对函数和触发器进行版本控制?

假设数据库中有一些带有函数的触发器,如下所示:

-- Insert a new entry into another table
-- every time a NEW row is inserted
CREATE FUNCTION trgfunc_write_log() RETURNS TRIGGER AS $$
BEGIN
    INSERT INTO some_other_table (
        -- some columns
        meter_id,
        date_taken,
        temperature,
    ) values (
        NEW.meter_id,
        NEW.time_taken,
        NEW.temperature
    );

    return NEW;
END;
$$ language 'plpgsql';

-- The trigger itself: AFTER INSERT
CREATE TRIGGER trg_temperature_readings
AFTER INSERT ON temperature_readings
FOR EACH ROW
EXECUTE FUNCTION trgfunc_write_log();
Run Code Online (Sandbox Code Playgroud)

通常,此触发器将位于我的 SqlAlchemy 模型旁边,并使用如下内容自动创建:

from sqlalchemy import DDL, event
from sqlalchemy.ext.declarative import declarative_base

Base …
Run Code Online (Sandbox Code Playgroud)

python sql postgresql triggers alembic

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

从本地存储库只将一个文件推送到GitHub

我有一个包含多个脚本的仓库.其中一个特别有用,我想用GitHub分享它.

如何将一个文件(带有提交历史记录)导出到GitHub存储库而不共享同一个存储库中的所有其他脚本?

就像是:

git remote add 'origin' git@github.com:user/Project.git
git push -u 'origin' ./useful-script.sh
Run Code Online (Sandbox Code Playgroud)

但是如何指定单个文件名?或者我应该创建某种特殊的"部分"提交?

git version-control github repository

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

[X] HTML自定义标签:优点和缺点

我想用一些语义[X] HTML标签,而不是<div>S: ,,<article> 等他们有的在即将到来的HTML5已经提出,但是,它不完全支持.<product><footer>

渲染时我可能面临哪些可能的缺点?使用CSS,JS?

我记得的是:IE6无法克隆它不知道的标签.

html tags html5 custom-tag

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

访问Python 2.6中的外部作用域

比方说,我有一些变量范围,并且在这个范围内调用的函数想要更改一些不可变变量:

def outer():
    s = 'qwerty'
    n = 123
    modify()

def modify():
    s = 'abcd'
    n = 456

有可能以某种方式访问​​外部范围?类似nonlocalPy3k的变量.

当然我可以s,n = modify(s,n)在这种情况下做,但是如果我需要一些在那里执行的通用"注入"并且必须能够重新分配给任意变量呢?

我有性能,所以,如果可能的话,eval不欢迎堆栈框架检查:)


UPD:这是不可能的.期.但是,如何访问外部作用域中的变量有一些选项:

  1. 使用全局变量.顺便说一句,func.__globals__是一个可变的字典;)
  2. 将变量存储在dict/class-instance /任何其他可变容器中
  3. 将变量作为参数提供并将其作为元组返回: a,b,c = innerfunc(a,b,c)
  4. 注入其他函数的字节码.这可以通过byteplaypython模块实现.

python scope

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

应用程序和请求上下文之间有什么区别?

Flask文档说有2个本地上下文:应用程序上下文和请求上下文.两者都是根据要求创建的,并在完成后拆除.

那么,有什么区别?每个用例有哪些?有没有条件只创建其中一个?

flask

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

具有不同时区的两个"时间"对象的比较

我正在比较time具有不同时区的两个对象,看起来它实际上忽略了时区,只测试小时/分钟/秒组件.

让我们创建两个time对象:

from datetime import time
import pytz

CET = pytz.timezone('CET')
Japan = pytz.timezone('Japan')

t1 = time(1,2,3, tzinfo=CET)
t2 = time(1,2,3, tzinfo=Japan)
Run Code Online (Sandbox Code Playgroud)

打印它们,我们发现它们非常不同:

datetime.time(1, 2, 3, tzinfo=<DstTzInfo 'CET' CET+1:00:00 STD>)
datetime.time(1, 2, 3, tzinfo=<DstTzInfo 'Japan' JST+9:00:00 STD>)
Run Code Online (Sandbox Code Playgroud)

现在,让我们比较一下:

t1 == t2
#-> True
Run Code Online (Sandbox Code Playgroud)

恩,什么?Python如何将它们视为平等?

python time datetime pytz python-2.7

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

带有默认值和关键字参数的参数之间有什么区别?

在Python中,具有默认值的参数之间的区别是什么:

def f(a,b,c=1,d=2): pass
Run Code Online (Sandbox Code Playgroud)

和关键字参数:

def f(a=1,b=2,c=3): pass
Run Code Online (Sandbox Code Playgroud)

?我想这没什么区别,但是教程有两个部分:

4.7.1.默认参数值

4.7.2.关键字参数

这听起来有些不同.如果是这样,为什么我不能在2.6中使用这种语法:

def pyobj_path(*objs, as_list=False): pass
Run Code Online (Sandbox Code Playgroud)

python syntax

6
推荐指数
3
解决办法
2208
查看次数