我有一个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) 我使用的是compression_encode_buffer同COMPRESSION_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)
那是怎么回事?为什么不包含标题?并且有“正确”的添加方式吗?
我有一个通过字段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)
谢谢!
在使用DVCS近两年之后,似乎一个固有的"缺陷"是意外的数据丢失:我丢失了没有推送的代码,我知道其他人也有.
我可以看到一些原因:非现场数据复制(即"提交必须转到远程主机")没有内置,存储库与代码和"hack"概念存在于同一目录中直到你有一些东西要发布"很普遍...但这不是重点.
我很想知道:您是否经历过与DVCS相关的数据丢失?或者您是否一直在使用DVCS?而且,相关的,除了"记得经常推"之外,还有什么可以做的,以尽量减少风险?
我注意到,在事件处理程序中添加后缀“handler”是很常见的(至少在 ECMAScript 中):clickHandler, fooBarHandler, etc\xe2\x80\xa6 但我一直认为用“handle”作为前缀更有意义handleClick:handleFooBar, ETC。
使用前缀表示法,方法更容易直观地解析(很容易区分处理程序和其他事物),可以通过编辑器的文本完成更快地查找(或忽略),并且它们遵循方法应该是动词(handleClick是是动词,clickHandler是名词)。
那么,为什么后缀表示法如此常见呢?是否有一些我没有注意到的隐藏好处?
\n在这里发疯......从外壳内,我可以这样做:
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)
我究竟做错了什么?提前致谢!
我想在我的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 …
除了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)
请注意,我想向串行是安全的(所以pickle和marshel都出来了),并且PyYAML是一种选择,但我不喜欢YAML的复杂性,所以我想知道是否有其他的选择.
编辑:似乎对我的数据的性质存在一些混淆.其中一些是Unicode(例如,名称),其中一些是二进制(例如,图像)...所以一个序列化库混淆unicode并且str对我来说就像一个混淆"42"和混淆的库一样无用42.
正如标题所说 - 当达到最大值时,是否可以声明最大队列大小和代理行为?或者这是特定于经纪商的选择?
我问,因为我正在尝试了解AMQP,而不是因为我对任何特定经纪人都有这个具体问题......但是经纪人特定的答案仍然很有见地.
全文搜索排名文档表明
\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\nRun Code Online (Sandbox Code Playgroud)\n\n那么,如何找出 tsvector 中的哪些词位与给定的 tsquery 匹配?
\n