小编chr*_*kso的帖子

使用 SQLAlchemy ORM (0.8) 搜索 HSTORE 列的正确语法是什么?

我正在使用带有flask-sqlachemy 扩展的flask。

正在尝试搜索具有特定值的 hstore 键的所有记录。

以下是该列的设置:

from flask.ext.sqlalchemy import SQLAlchemy
from sqlalchemy.dialects.postgresql import HSTORE
from sqlalchemy.ext.mutable import MutableDict

db = SQLAlchemy()

class BookDB(db.Model):

    attributes = db.Column(MutableDict.as_mutable(HSTORE), nullable=False, default={ 'disabled' : '0'}, index=True)
Run Code Online (Sandbox Code Playgroud)

这是我正在运行的查询:

results = BookDB.query.filter_by(attributes={ 'disabled' : '0' }).all()
Run Code Online (Sandbox Code Playgroud)

这没有错误,但没有发现任何结果。

如果我做:

results = BookDB.query.filter_by(attributes['disabled']='0').all()
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:“语法错误:关键字不能是表达式”

如果我使用 filter() 而不是 filter_by(),我可以做到

results = BookDB.query.filter(BookDB.attributes['disabled']=='0').all()
Run Code Online (Sandbox Code Playgroud)

这工作正常并产生正确的结果。

但是它与 filter_by() 一起使用的语法是什么?

python sqlalchemy flask flask-sqlalchemy hstore

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

如何使用 Flask / SQLAlchemy 将返回结果的数量限制为仅 1000 个最新条目?

我正在寻找类似于 reddit/hackernews 具体如何处理其“新”列表的内容(这似乎是许多主要网站的常见方法)。它看起来像这样工作:

  • 当提交新链接时,会抓取一定数量的最新条目
  • 这些查询按 PER_PAGE # 划分并缓存为 cachekey = LatestPage1,2,3,4
  • 单击下一个/上一个按钮加载下一个/上一个缓存键

我的问题是:很难找到 SQLalchemy/flask-sqlalchemy 代码来获取仅固定数量的最新条目的查询。

我怎么说:

q = PostDB.query(order_by('creation_time').desc()).limit(1000)
for chunkOf50Results in q:
  cache.set(CachedChunk+=1, chunkOf50Results)
Run Code Online (Sandbox Code Playgroud)

python caching sqlalchemy flask flask-sqlalchemy

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

仅使用redis来实现活动流有多安全?

我正在建立一个允许用户"关注"不同成员的网站,每当该成员发布时,它都会按照相反的时间顺序将其添加到所有关注者活动流中.这些天很常见的东西.

但是我无法确定实现这一目标的最具可扩展性/面向未来的方法(没有连接).

我正在使用flask/heroku/sqlalchemy/postgres.我正在考虑使用Open-redis插件并执行类似Instagram的提示:每个用户都有一个redis列表,每当"跟随"帖子时,它会将帖子添加到每个关注者列表的开头并修剪其总大小.

我对redis知之甚少,不知道为每个用户流依赖soley是否安全.使用open-redis时,他们没有提到任何关于持久性的内容,所以我不知道这些日子是否仅仅是一个普遍的事情,它只是假设.

如果redis不是100%可靠/安全,那么对于我如何使用postgres/Hstore进行此操作的任何想法(请不要加入).

postgresql design-patterns stream social-networking redis

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

使用flask/jinja,在用户生成的文本块中安全地呈现链接的可行方法是什么?

想想在某些纯文本旁边粘贴链接的Twitter,在呈现推文时,该网址现在是一个可点击的链接.

我是:

  • 通过扫描html标签的文本并用html实体代码替换它们,用我自己的替换jinja的autoescape

  • 使用正则表达式来检测文本中包含的URL并将其替换为a href =

    • 这个表达式会检测任何#tt,http/https,www /任何子域名是什么意思?
  • 并将此全部渲染为模板中的|safe?

还是有一个python/flask/jinja'功能'可以更好地处理这种事情?

python regex security jinja2 flask

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

如何使用带有flask-sqlalchemy的Postgres'Hstore列?

我正在尝试实现此代码https://gist.github.com/1859653,它允许sqlalchemy与hstore列进行交互.

它在gist的评论中提到需要运行psycopg2.extras.register_hstore.什么时候应该运行这个功能?如果我做:

@app.before_request
def reg_hstore() :
register_hstore(db.engine.raw_connection(), True)
Run Code Online (Sandbox Code Playgroud)

heroku错误与'太多连接'

还提到使用pghstore(http://pypi.python.org/pypi/pghstore)而不是psycopg2,但它没有说明如何设置它.

另外,我想知道这个附加代码是否支持使用hstore索引.

python sqlalchemy flask flask-sqlalchemy hstore

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

要将Turbolinks 5与Django一起使用,在使用redirect()时如何自动包含Turbolinks-Location标头?

根据Turbolinks 5文档中的“跟随重定向”(https://github.com/turbolinks/turbolinks#following-redirects):

当您访问location /one并且服务器将您重定向到location时 /two,您希望浏览器的地址栏显示重定向的URL。

但是,Turbolinks使用发出请求XMLHttpRequest,该请求透明地跟随重定向。Turbolinks无法在没有服务器额外配合的情况下判断请求是否导致了重定向。

解决方案是:

发送Turbolinks-Location标头以响应被重定向的访问,Turbolinks将用您提供的值替换浏览器的最高历史记录条目。

Turbolinks Rails引擎针对通过redirect_to助手重定向的非GET XHR请求自动执行此优化。

我对在Django(1.11)项目上使用Turbolinks感兴趣,我想知道是否有人可以向我指出如何创建新的Django redirect()函数或修改现有函数以始终包含Turbolinks的正确方向-重定向到预期功能所需的位置标头。我绝对不希望每次重定向时都手动设置此标头。

在“提交表单后重定向”部分中有一个类似的条目(https://github.com/turbolinks/turbolinks#redirecting-after-a-form-submission),对于理解如何实现的任何帮助,我也将不胜感激:

如果表单提交导致服务器上的状态更改影响缓存的页面,请考虑使用清除Turbolinks的缓存 Turbolinks.clearCache()

Turbolinks Rails引擎针对通过redirect_to助手重定向的非GET XHR请求自动执行此优化。

我确实在github上看到一个“为Django引入Turbolinks实现”程序包,但这是从turbolinks-classic派生的,并且源代码没有提及Turbolinks-Location标头,因此我确定这不是我想要的。

python django redirect http-headers turbolinks

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

使用python从字符串中删除所有空格和引号的最有效方法是什么?

可能重复:
从Python中删除字符串标点符号的最佳方法

我有一个字符串,我想在输出上放两个双引号"{{ var }}",所以我想确保从用户提供的字符串的末尾删除所有单/双引号.实现这一目标的最有效方法是什么?

输入/期望输出:

   """""""""" string here '''''''''''''''         => 'string here'
       string'''''''""""""''''''"""""  => 'string'
Run Code Online (Sandbox Code Playgroud)

python regex string

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

有没有更好的方法来应用与Jinja/Flask的nl2br过滤器?

可能重复:
为什么这个Jinja nl2br过滤器逃避了?而不是<p>?

我正在使用Jinja和Flask(启用自动启用),我正在尝试应用此过滤器

import re

from jinja2 import evalcontextfilter, Markup, escape

_paragraph_re = re.compile(r'(?:\r\n|\r|\n){2,}')

app = Flask(__name__)

@app.template_filter()
@evalcontextfilter
def nl2br(eval_ctx, value):
    result = u'\n\n'.join(u'<p>%s</p>' % p.replace('\n', '<br>\n') \
        for p in _paragraph_re.split(escape(value)))
    if eval_ctx.autoescape:
        result = Markup(result)
    return result
Run Code Online (Sandbox Code Playgroud)

它的问题在于它从不应用<br>s并且总是<p>在每条线周围应用s.

如果我输入:

1
2

3
4
Run Code Online (Sandbox Code Playgroud)

在a中textarea,它被保存到数据库中作为"u'1\r \n2\r \n\r \n \n \n \n\r \n \n \n \n4'",当使用|nl2br过滤器放入Jinja时,它会以

<p>1</p>

<p>2</p>

<p>3</p>

<p>4</p>
Run Code Online (Sandbox Code Playgroud)

我正在寻找它

<p>1<br>2</p>
<p>3<br>4</p>
Run Code Online (Sandbox Code Playgroud)

这个正则表达式方法对我所追求的东西来说似乎有些过分.

请告诉我有一种更简单的方法可以实现这一目标,因为我一整天都在拔头发试图解决这个问题......

python regex template-engine jinja2 flask

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