相关疑难解决方法(0)

Python 3中execfile的替代方法是什么?

似乎他们在Python 3中取消了通过删除快速加载脚本的所有简单方法 execfile()

有没有一个明显的选择我错过了?

python python-3.x

325
推荐指数
10
解决办法
24万
查看次数

如何使用Django进行"批量更新"?

我想用Django更新一个表 - 在原始SQL中是这样的:

update tbl_name set name = 'foo' where name = 'bar'
Run Code Online (Sandbox Code Playgroud)

我的第一个结果是这样的 - 但这很讨厌,不是吗?

list = ModelClass.objects.filter(name = 'bar')
for obj in list:
    obj.name = 'foo'
    obj.save()
Run Code Online (Sandbox Code Playgroud)

有更优雅的方式吗?

django django-models

133
推荐指数
6
解决办法
10万
查看次数

Django脚本无需使用manage.py shell即可访问模型对象

我正在编写一个脚本,将一些模型对象导入我的django应用程序使用的数据库中.在过去,我通过运行./manage.py shell然后解决了这个问题import myscript.我相信有更好的方法.我希望能够从我的HD上的任何地方调用脚本python scriptname.py,并且在该脚本的前几行中它将执行任何必要的导入/其他操作,以便它可以访问模型对象并且表现得好像它已经运行使用manage.py shell.

我需要添加到脚本中才能实现此目的?

编辑:

基于@Melug的回答,添加了动态设置的Python路径来解决问题中的"我的HD上的任何地方"部分:

import sys
sys.path.append('c:\\my_projec_src_folder')
from myproject import settings
from django.core.management import setup_environ
setup_environ(settings)
Run Code Online (Sandbox Code Playgroud)

python django django-models

65
推荐指数
6
解决办法
5万
查看次数

在Django之外运行Python脚本

我有一个脚本,它使用Django ORM功能,以及其他外部库,我想在Django之外运行(即,从命令行执行).

编辑:目前,我可以通过导航到URL来启动它...

如何为此设置环境?

python django

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

使用django:从"python manage.py shell"到python脚本

我可以移动到python项目目录(比如c:\ www\myproject),然后发出

   python manage.py shell
Run Code Online (Sandbox Code Playgroud)

然后我可以使用django项目中的所有模块,从shell命令中说出以下命令:

import settings 
from django.template import Template, Context

t=Template("My name is {myname}.")
c=Context({"myname":"John"})
f = open('write_test.txt', 'w')
f.write(t.render(c))
f.close
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试将所有命令收集到python脚本中时,说"mytest.py",我无法执行脚本.我必须错过重要的事情.

我发出了python mytest.py

然后我得到Import error: could not import settings它是在sys路径上吗?"

我在settings.py所在的项目目录中......

有人可以帮帮我吗?

谢谢.

python django

28
推荐指数
4
解决办法
4万
查看次数

用于自动为django模型创建数据的工具

有没有办法自动为django模型创建数据?所以我创建了一个包含选项,文本字段,外键和所有内容的模型.是否有自动方式填充数据?我真的不在乎它们是否是垃圾值,只是它在架构中是有效的.

如果有一种方法可以指定某些模型并生成其他模型,那将会非常酷.我知道'类别',不介意手动输入那些.如果有数据已经​​存在,它可以生成有效的"条目"并使用现有数据作为外键,这将是很好的.

python django django-models django-admin

22
推荐指数
3
解决办法
1万
查看次数

运行时错误:App注册表尚未准备好

我正在尝试创建一个用测试用户填充数据库的脚本.我是Django和Python的新手.我继续得到:

Runtime error: App registry isn't ready yet. 
Run Code Online (Sandbox Code Playgroud)

这是输出和错误:

starting population script
Traceback (most recent call last):
File "populate.py", line 32, in <module>
populate()
File "populate.py", line 22, in populate
i.save()
File "c:\Python27\lib\site-packages\django-1.7a2-py2.7.egg\django\db\models\base.py",    line 603, in save
force_update=force_update, update_fields=update_fields)
...
...
...    
File "c:\Python27\lib\site-packages\django-1.7a2-py2.7.egg\django\apps\registry.py", line   156, in get_models
self.check_ready()
File "c:\Python27\lib\site-packages\django-1.7a2-py2.7.egg\django\apps\registry.py",   line 119, in check_ready
raise RuntimeError("App registry isn't ready yet.")
RuntimeError: App registry isn't ready yet.
Run Code Online (Sandbox Code Playgroud)

这是代码:

import os
import datetime

def populate():
    freer = User.objects.create_user( 'joyyie', 'lolcats@gmail.com', 'e') …
Run Code Online (Sandbox Code Playgroud)

python django runtime-error django-1.7

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

如何运行从子文件夹导入的 Python 3 脚本?

无论我尝试什么,自从我切换到 Python 3 后,我只能从项目的根文件夹运行导入的脚本,而不能从子文件夹导入。我知道这里有很多关于我收到的错误消息的问题,但建议的解决方案对我不起作用。有人可以为这个小示例项目提供示例解决方案吗?我相信它会受到很多人的赞赏。

\n\n
proj\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foofolder\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foofile.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 subfolder\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 run.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.py\n
Run Code Online (Sandbox Code Playgroud)\n\n

foofun()我在 中定义了该函数foofile.py,并想在 中调用它run.py

\n\n

如果run.py直接在proj里面就可以了。但是(只是为了让事情井井有条)我想将其放在子文件夹中 - 令人惊讶的是,这似乎是不可能的。

\n\n

烦人的是,我的 IDE (PyCharm) 中的自动完成功能表明from foofolder.foofile import foofun应该可以工作。但事实并非如此。我也无法想象任何其他进口:

\n\n

from foofolder.foofile import foofun-->ImportError: No module named 'foofolder'

\n\n

from .foofolder.foofile import foofun--> SystemError: Parent module '' not loaded, cannot perform relative import(与开头的两个点相同。)

\n\n

from proj.foofolder.foofile import foofun--> …

python-import sys

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

如何在脚本中导入所有 django 模型及更多模型?

我已将以下代码放在脚本文件的顶部

 os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'momsite.conf.local.settings')
 django.setup()
Run Code Online (Sandbox Code Playgroud)

现在我可以导入我的 django 应用程序并运行小片段(主要用于测试内容)

我想导入通过注册的所有模型settings.INSTALLED_APPS

我知道https://github.com/django-extensions/django-extensions在运行时会manage.py shell_plus自动导入所有模型等。

我正在看他们的代码。不确定我是否能理解它。

https://github.com/django-extensions/django-extensions/blob/3355332238910f3f30a3921e604641562c79a0a8/django_extensions/management/commands/shell_plus.py#L137

目前,我正在执行以下操作,我认为它正在导入模型,但不知何故在脚本中不可用

 from django_extensions.management.shells import import_objects
 from django.core.management.base import BaseCommand, CommandError

 options = {}
 style = BaseCommand().style
 import_objects(options, style)
Run Code Online (Sandbox Code Playgroud)
  • 编辑..答案采用 dirkgroten

import_objects内部调用from importlib import import_module显然,我们需要用导入的类填充 globals()

 options = {'quiet_load': True}
 style = BaseCommand().style

 imported_objects = import_objects(options, style)
 globals().update(imported_objects)
Run Code Online (Sandbox Code Playgroud)

python django

3
推荐指数
1
解决办法
866
查看次数