小编Dav*_*ver的帖子

PostgreSQL中的词典排序非常慢?

我有一个vote_pairs看起来像这样的视图:

CREATE VIEW vote_pairs AS
    SELECT
        v1.name as name1,
        v2.name as name2,
        ...
    FROM votes AS v1
    JOIN votes AS v2
        ON v1.topic_id = v2.topic_id;
Run Code Online (Sandbox Code Playgroud)

并且,如果votes表中有大约100k行,则跨此视图的查询大约需要3秒钟才能执行.

但是,当我在名称上添加额外的过滤器时:

… ON v1.topic_id = v2.topic_id AND v1.name < v2.name;
Run Code Online (Sandbox Code Playgroud)

运行时间翻了四倍,查询vote_pairs完成时间大约需要12秒.

无论限制的位置如何,此运行时都是一致的...例如,如果将过滤器移动到WHERE外部查询的子句,则查询同样很慢:

SELECT * FROM vote_pairs WHERE name1 < name2;
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?Postgres的词典比较速度慢吗?这是别的吗?我怎么能提高这个查询的速度?

投票表:

CREATE TABLE votes (
    topic_id INTEGER REFERENCES topics(id),
    name VARCHAR(64),
    vote VARCHAR(12)
)

CREATE INDEX votes_topic_name ON votes (topic_id, name);
CREATE INDEX votes_name ON …
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-8.4 postgresql-performance

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

iOS compression_encode_buffer不包含zlib标头?

我使用的是compression_encode_bufferCOMPRESSION_ZLIB在一个iOS应用zlib的,压缩数据,但结果是缺少zlib的头。

例如:

size = compression_encode_buffer(
    destinationBuffer, destinationBufferSize,
    sourceBuffer, sourceBufferSize, nil,
    COMPRESSION_ZLIB
)
Run Code Online (Sandbox Code Playgroud)

将返回字节:

AD 53 C1 8E 9B 30 …
Run Code Online (Sandbox Code Playgroud)

例如,data.encode("zlib")在使用相同数据的Python 时,将返回:

78 9C AD 53 C1 8E 9B 30 …
^^ ^^ correct zlib header
Run Code Online (Sandbox Code Playgroud)

那是怎么回事?为什么不包含标题?并且有“正确”的添加方式吗?

zlib ios swift

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

自动注释通过多对多字段检索的 Django 模型

我有一个通过字段Student与模型相关的Course模型ManyToMany

class Student(Model):
    name = TextField()

class Course(Model):
    name = TextField()
    students = ManyToManyField(Student, through="StudentCourse")

class StudentCourse(Model):
    student = ForeignKey(Student)
    course = ForeignKey(Course)
    section_name = TextField()
Run Code Online (Sandbox Code Playgroud)

如何自动注释通过Course.students多对多字段检索到的学生及其课程中的部分?

例如,不必extra在每个查询上添加显式:

>>> students = course.students.extra(select={
...     "section_name": "app_student_course.section_name",
... })
>>> print students[0].section_name
u'First Section'
Run Code Online (Sandbox Code Playgroud)

我只能:

>>> students = course.students.all()
>>> print students[0].section_name
u'First Section'
Run Code Online (Sandbox Code Playgroud)

谢谢!

django django-models

6
推荐指数
2
解决办法
1165
查看次数

DVCS和数据丢失?

在使用DVCS近两年之后,似乎一个固有的"缺陷"是意外的数据丢失:我丢失了没有推送的代码,我知道其他人也有.

我可以看到一些原因:非现场数据复制(即"提交必须转到远程主机")没有内置,存储库与代码和"hack"概念存在于同一目录中直到你有一些东西要发布"很普遍...但这不是重点.

我很想知道:您是否经历过与DVCS相关的数据丢失?或者您是否一直在使用DVCS?而且,相关的,除了"记得经常推"之外,还有什么可以做的,以尽量减少风险?

version-control dvcs

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

为什么事件处理程序的后缀是“handler”?为什么不给它们加上“句柄”前缀呢?

我注意到,在事件处理程序中添加后缀“handler”是很常见的(至少在 ECMAScript 中):clickHandler, fooBarHandler, etc\xe2\x80\xa6 但我一直认为用“handle”作为前缀更有意义handleClickhandleFooBar, ETC。

\n\n

使用前缀表示法,方法更容易直观地解析(很容易区分处理程序和其他事物),可以通过编辑器的文本完成更快地查找(或忽略),并且它们遵循方法应该是动词(handleClick是是动词,clickHandler是名词)。

\n\n

那么,为什么后缀表示法如此常见呢?是否有一些我没有注意到的隐藏好处?

\n

naming-conventions

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

Django Taggit - 标签关联未从自定义管理表单中保存

在这里发疯......从外壳内,我可以这样做:

product.tags.add("a_new_tag")
Run Code Online (Sandbox Code Playgroud)

标签被添加到数据库中,标签与产品的关联工作正常。(即当我做Product.objects.filter(tags__name__in=["a_new_tag"]相应的产品时吐出来)

我需要做的是在处理表单时在管理中添加一些标签。

这是我的表单代码(阅读第 4 行和第 5 行中的注释):

class ProductForm(ModelForm):
        def save(self, commit=True):
            product = super(ProductForm, self).save(commit=False)
            product.type="New Type to Confirm Info is being Saved Correctly" //this is saved to the product.
            product.tags.add('a_new_tag_1') //the tag is saved to the taggit db, but the association with the product isn't kept.
            product.save()
            self.save_m2m()
            return m
Run Code Online (Sandbox Code Playgroud)

我尝试在管理类中进行保存,但这也不起作用:

class ProductAdmin(admin.ModelAdmin):
    form = ProductForm
    def save_model(self, request, obj, form, change):
        obj.type="new_type" //this works 
        obj.tags.add("a_new_tag_2") //tag association not saved
        obj.save()
        form.save_m2m()
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?提前致谢!

forms django admin django-taggit

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

在Virtualenv中的Mac OS Lion上安装SciPy

我想在我的vertualenv上安装scipy.

Python中使用的virtualenv:

(Django)miki725mac:Django miki725$ python
Python 2.7.2 (default, Aug  3 2011, 00:58:00) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
Run Code Online (Sandbox Code Playgroud)

我尝试通过这样做安装scipy失败:

$ svn co http://svn.scipy.org/svn/scipy/trunk scipy
$ python setup.py build
$ python setup.py install
Run Code Online (Sandbox Code Playgroud)

然后我尝试了:

$ pip install scipy
Run Code Online (Sandbox Code Playgroud)

根据我尝试的建议:

$ pip install -e git://github.com/scipy/scipy@effa6f68f8ada57b7986#egg=scipy-dev
Run Code Online (Sandbox Code Playgroud)

日志

以下是所有安装步骤的完整日志:(它们对于stackoverflow来说太长了)

python setup.py build

http://www.diglo.com/download/3dfc7a1af18617d7ee49faa8bea3464703ea

python setup.py install

http://www.diglo.com/download/ab13985c76ad709b25464fa1254daa4b03ea

pip install scipy

http://www.diglo.com/download/9e808fe5b57b6b01a8265d4b01958da703ea(引擎收录:http://paste.pocoo.org/show/454004/)

pip install -e …

python macos install scipy

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

Python保存正确处理str/unicode的序列化?

除了PyYAML之外,是否有正确处理unicode/ str?的安全Python数据序列化库?

例如:

>>> json.loads(json.dumps([u"x", "x"]))
[u'x', u'x'] # Both unicode
>>> msgpack.loads(msgpack.dumps([u"x", "x"]))
['x', 'x'] # Neither are unicode
>>> bson.loads(bson.dumps({"x": [u"x", "x"]}))
{u'x': [u'x', 'x']} # Dict keys become unicode
>>> pyamf.decode(pyamf.encode([u"x", "x"])).next()
[u'x', u'x'] # Both are unicode
Run Code Online (Sandbox Code Playgroud)

请注意,我想向串行是安全的(所以picklemarshel都出来了),并且PyYAML是一种选择,但我不喜欢YAML的复杂性,所以我想知道是否有其他的选择.

编辑:似乎对我的数据的性质存在一些混淆.其中一些是Unicode(例如,名称),其中一些是二进制(例如,图像)...所以一个序列化库混淆unicode并且str对我来说就像一个混淆"42"和混淆的库一样无用42.

python serialization

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

是否可以使用AMQP声明最大队列大小?

正如标题所说 - 当达到最大值时,是否可以声明最大队列大小和代理行为?或者这是特定于经纪商的选择?

我问,因为我正在尝试了解AMQP,而不是因为我对任何特定经纪人都有这个具体问题......但是经纪人特定的答案仍然很有见地.

amqp

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

从 PostgreSQL 全文搜索获取匹配词位列表?

全文搜索排名文档表明

\n\n
\n

您可以编写自己的排名函数和/或将其结果与其他因素结合起来以满足您的特定需求。

\n
\n\n

但我还没有找到任何关于如何构建自定义排名函数的示例。

\n\n

具体来说,我无法弄清楚如何提取 tsvector 中与给定 tsquery\xe2\x80\xa6 匹配的词位列表,如下所示:

\n\n
> SELECT ts_matching_lexemes(\'cat in the hat\'::tsvector, \'cat\'::tsquery);\nts_matching_lexems\n------------------\n\'cat\':1\n
Run Code Online (Sandbox Code Playgroud)\n\n

那么,如何找出 tsvector 中的哪些词位与给定的 tsquery 匹配?

\n

postgresql

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