小编Gil*_*tes的帖子

Django:批量运营

业务:
我遇到了一个问题 - 当使用Django ORM处理大型数据集时,规范的方法是使用每个元素进行操作.但当然这种方式效率很低.所以我决定使用原始SQL.

实质:
我有一个基本代码,它形成SQL查询,更新表的行,并提交它:

from myapp import Model
from django.db import connection, transaction
COUNT = Model.objects.count()
MYDATA = produce_some_differentiated_data() #Creating individual value for each row
cursor = connection.cursor()
str = []
for i in xrange(1, COUNT):
    str.append("UPDATE database.table\n"
               "SET field_to_modify={}\n"
               "WHERE primary_key_field={};\n".format(MYDATA, i))


str = ''.join(str)
cursor.execute(str)
transaction.commit_unless_managed() #This cause exception
Run Code Online (Sandbox Code Playgroud)

在最后一个声明中我得到了这个,即使SIZE它很小:

_mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now")
Run Code Online (Sandbox Code Playgroud)

也许Django不允许一次执行多个SQL查询?

ps在提交之前关闭游标有助于避免异常,但这是正确的吗?

我的期望:
我正在为批量操作寻找所有可能的可靠解决方案(最好是在Django内部).我不关心它是ORM还是原始SQL,我会支持上面粘贴的代码,如果我能避免错误的话.如果没有解决方案,至少,只是为了好奇,才能知道这个例外的原因.

除了答案我还学到了什么:
在Django 1.4中引入bulk_create了高效的多重INSERT操作

python sql django orm bulk

7
推荐指数
2
解决办法
4816
查看次数

搁置:选择数据库

shelve 文件说:

选择使用哪个数据库包(例如dbm,gdbm或bsddb)取决于可用的接口.

那什么意识?如何确定选择哪个包?如何严格定义必须选择哪一个?最好使用哪种数据库实现?

python database serialization persistence shelve

7
推荐指数
2
解决办法
2034
查看次数

Django灯具和OneToOneField

如前所述这里对象与OneToOne关系到其他模型的模型自动创建.因此,如果我将Model1与O2O连接到Model2,并且将创建具有pk = 1的Model2的对象,则将自动创建Model2与model2_id = 1的对象.然后,如果我将数据从DB转储到json,我将有两个这些对象的记录.如果我将尝试将此数据加载到DB,loaddata它将失败,因为Model2的对象将被创建两次,它将导致唯一的索引违规和IntegrityError.
有人找到了理智的解决方案吗?

ps
我使用Django 1.3.7

python django

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

选择不在Django的另一个表中的值

如何将这个SQL查询转换为Django ORM语句?

SELECT field1, field2, field3
FROM table1
WHERE field1 NOT IN 
(SELECT 2_field1 FROM table2);
Run Code Online (Sandbox Code Playgroud)

请帮忙!:)

PS
table1table2不与有界ForeignKeyManyToMany

python sql django orm

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

如何通过id访问变量?

可能重复:
通过id()获取对象?

>>> var = 'I need to be accessed by id!'
>>> address = id(var)
>>> print(address)
33003240
Run Code Online (Sandbox Code Playgroud)

有没有办法使用的地址var在内存中,所提供的id(),用于访问的价值var

UPD:
我还想说,如果这不能在标准Python中完成,那么它也会很有趣,如果这可以通过黑客攻击C++内部的Python来实现.

UPD2: 知道如何改变价值也会很有趣var.

python pointers reference pass-by-reference pass-by-value

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

Paper.js中的事件处理程序

我是Paper.js的新手,在阅读教程时,我对事件系统感到疑惑.这就是教程中描述的事件处理方式:

var path;
function onMouseDown(event) {
    // Create a path:
    path = new Path();
    path.strokeColor = 'black';
    // Add the mouse down position:
    path.add(event.point);
}

function onMouseUp(event) {
    // Add the mouse up position:
    path.add(event.point);
}
Run Code Online (Sandbox Code Playgroud)

所以,它只是在全局命名空间中的功能...
最后我有一些关于它的问题,我没有在互联网上找到任何东西:
- 如何将事件处理程序绑定到特定的画布?
- 如何将事件处理程序绑定到特定的"对象"(栅格图像,矩形等)?
- 如何绑定多个事件处理程序?

javascript graphics paperjs

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

lxml 元素布尔检查

这段代码:

from lxml.html import fromstring, tostring

s = '<span class="left">Whatever</span>'
e = fromstring(s)
print(tostring(e))
print(bool(e))
Run Code Online (Sandbox Code Playgroud)

输出:

<span class="left">Whatever</span>
False
Run Code Online (Sandbox Code Playgroud)

为什么?布尔检查如何在这个类中工作?请指点我相关的文档或代码。

ps
我使用lxml3.3.5

python lxml

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

如何使用SQLAlchemy保存unicode?

我遇到过这样的错误:

File "/vagrant/env/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 435, in do_execute
            cursor.execute(statement, parameters)
        exceptions.UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 8410: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

当我试图用指定的Python unicode字符串保存ORM对象时,就会发生这种情况.因此dict parameters,将unicode字符串作为其值之一,并在将其强制转换为str类型时产生错误.

我试图convert_unicode=True设置引擎和列的设置,但没有成功.

那么在SQLAlchemy中处理unicode的好方法是什么?

UPDATE

这是关于我的设置的一些细节:

表:

                                    Table "public.documents"
   Column   |           Type           |                       Modifiers                        
------------+--------------------------+--------------------------------------------------------
 id         | integer                  | not null default nextval('documents_id_seq'::regclass)
 sha256     | text                     | not null
 url        | text                     | 
 source     | text                     | not null
 downloaded | timestamp with time zone | not null
 tags …
Run Code Online (Sandbox Code Playgroud)

python unicode sqlalchemy

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

仅当先决条件更改时,如何使GNU make才能重建假目标?

就我而言,我有requirements目标,该目标安装了所需的Python软件包test,并运行了测试,并取决于先前的测试。

安装依赖项是一项很长的操作,我希望仅在requirements.txt更改时才执行。我该如何实现?

这是我现在拥有的Makefile的简化示例:

.PHONY: test requirements

requirements: requirements.txt
    pip install -r $<

test: tests/ | requirements
    py.test $^
Run Code Online (Sandbox Code Playgroud)

makefile gnu-make

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

调用setup.py安装时如何将--debug传递给build_ext?

当我执行一个命令python setup.py install或者python setup.py develop它会执行build_ext命令作为步骤之一。如何将--debug选项传递给它,就像它被调用一样python setup.py build_ext --debug

更新这里setup.py与我的非常相似:https : //github.com/pybind/cmake_example/blob/11a644072b12ad78352b6e6649db9dfe7f406676/setup.py#L43

我想调用python setup.py install但将类实例中的debug属性设置build_ext为 1。

python distutils setuptools python-extensions

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