小编sma*_*ang的帖子

用户在SQLAlchemy中定义的函数创建

SQLAlchemy为定义数据库表提供了一个非常干净的接口:

engine = create_engine('sqlite:///:memory:')

metadata = MetaData()

user = Table('user', metadata,
    Column('user_id', Integer, primary_key = True),
    Column('user_name', String(16), nullable = False),
    Column('email_address', String(60), key='email'),
    Column('password', String(20), nullable = False)
)

user_prefs = Table('user_prefs', metadata,
    Column('pref_id', Integer, primary_key=True),
    Column('user_id', Integer, ForeignKey("user.user_id"), nullable=False),
    Column('pref_name', String(40), nullable=False),
    Column('pref_value', String(100))
)
Run Code Online (Sandbox Code Playgroud)

一旦定义了这些表,就可以很容易地使用该metadata.create_all(engine)函数创建这些表.当您想要创建不会干扰生产中使用的现有表的表时,这对于测试尤其有用.

我目前正在开发的项目在很大程度上依赖于postgres中的用户定义函数.有没有一种干净的方法来使用SQLAlchemy定义这些函数,以便metadata.create_all(engine)正确地创建函数以及相应的表?

python postgresql sqlalchemy

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

使用大型 ETA 调度 celery 任务

我目前正在使用ETA功能和 redis 代理在 celery 中试验未来的任务。使用 redis 代理的已知问题之一与可见性超时有关

如果在可见性超时内未确认任务,则任务将重新交付给另一个工作人员并执行。

这会导致执行时间超过可见性超时的 ETA/倒计时/重试任务出现问题;事实上,如果发生这种情况,它将再次执行,并再次循环执行。

我可以设想的一些任务将在几周/几个月的时间尺度上有一个 ETA。设置visibility timeout足够大以包含这些任务可能是不明智的。

是否有任何方法可以使用 redis 代理处理这些任务?我知道这个问题。更换经纪人是唯一的选择吗?

python redis celery

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

Flask THREADS_PER_PAGE配置

我目前正在使用flask开发应用程序,我注意到许多现有项目在其config.py中使用THREADS_PER_PAGE标志(即Here and Here).

第一个链接将THREADS_PER_PAGE描述为应用程序线程,并建议每个核心使用两个线程(一个用于处理传入请求,另一个用于执行后台操作).

我浏览了烧瓶源代码,但我无法找到对threads_per_page配置选项的任何引用.是否有人能够描述THREADS_PER_PAGE的目的,以及它是否真的有必要(如果未指定则默认为什么).

python concurrency flask

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

Postgres:外表的外键

我有一个外国表,例如:

CREATE FOREIGN TABLE film (
    id          varchar(40) NOT NULL,
    title       varchar(40) NOT NULL,
    did         integer NOT NULL,
    date_prod   date,
    kind        varchar(10),
    len         interval hour to minute
)
SERVER film_server;
Run Code Online (Sandbox Code Playgroud)

ID为该表的主键(在远程数据库中设置)。我想让本地表引用外表,并在本地表上设置外键约束-例如:

CREATE TABLE actor (
    id          varchar(40) NOT NULL,
    name       varchar(40) NOT NULL,
    film_id       varchar(40) NOT NULL,
)

ALTER TABLE actor ADD CONSTRAINT actor_film_fkey FOREIGN KEY (film_id) 
    REFERENCES film(id);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试添加外键约束时,出现错误:

ERROR:  referenced relation "film" is not a table
Run Code Online (Sandbox Code Playgroud)

是否可以向外表添加外键约束?

foreign-data-wrapper postgresql-9.4

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