繁体   English   中英

如何从bash脚本运行django shell命令

[英]How can I run django shell commands from a bash script

我决定不再创建表,而是重新创建它们并在我的开发环境中填充数据,而是决定创建一个名为reset_db的bash脚本来为我执行此操作。 我得到它重击表,重新创建它们。 但是它无法用Django orm中的数据填充表。

我尝试通过从脚本调用django shell来执行此操作,然后运行ORM命令填充表。 但是,似乎django shell命令没有运行。

我尝试在外壳中手动/直接运行django orm命令,它们运行正常,但不能从bash脚本中运行。

我得到的错误是:

NameError: name 'User' is not defined

NameError: name 'u1' is not defined

NameError: name 'm' is not defined

这是我的脚本:

#!/bin/bash
set +e

RUN_ON_MYDB="psql -X -U user --set ON_ERROR_STOP=on --set AUTOCOMMIT=off rcamp1"

$RUN_ON_MYDB <<SQL  # Whack tables
DROP TABLE rcamp_merchant CASCADE;
DROP TABLE rcamp_customer CASCADE;
DROP TABLE rcamp_point CASCADE;
DROP TABLE rcamp_order CASCADE;
DROP TABLE rcamp_custmetric CASCADE;
DROP TABLE rcamp_ordermetric CASCADE;
commit;
SQL

python manage.py syncdb   # Recreate tables

python manage.py shell <<ORM   # Start django shell. Problem starts here.
from rcamp.models import Customer, Merchant, Order, Point, CustMetric, OrderMetric
u1 = User.objects.filter(pk=5)
m = Merchant(u1, full_name="Bill Gates")
m
ORM

我对Django和Shell脚本都是陌生的。 谢谢你的帮助。

您应该看一下创建一个夹具来填充数据库https://docs.djangoproject.com/en/dev/howto/initial-data/

您需要显式导入用户。 django软件包和其他一些东西会自动导入,但是不会自动导入。

另外,为了避免不知道要导入的内容,还有一些管理命令 这将利用您的Django和Python。 您可以稍后学习Shell脚本。

在错误中清楚地看到的未被识别为模型类django-admin用户django-admin也许您缺少一些导入或类似的东西

  from django.db import models
  User import from django.contrib.auth.models

,顺便说一下

  User.objects.filter u1 = (pk = 5)

我想我放

  u1 = User.objects.filter (pk = 5). First ()

在末尾。 无论如何,在这里我留下一些可能有用的线程, https : //docs.djangoproject.com/en/dev/ref/django-admin/ http://www.stackoverflow.com/questions/6197256/django-user -model-fields-at-adminmodel https://groups.google.com/forum/?fromgroups =#! topic / django-users / WrVp1DDFrX8希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM