Python django模型构建表名称错误
我的ec2实例在aws免费层上有一个postgresql RDS实例。我本应该使用EB,但直到我有了很多东西,才真正了解它,我对重新开始一个新的ami并不感到兴奋。我正在尝试构建与db的第一次交互,其中有一个名为server_config的表,创建为:Python django模型构建表名称错误,python,django,postgresql,amazon-web-services,amazon-ec2,Python,Django,Postgresql,Amazon Web Services,Amazon Ec2,我的ec2实例在aws免费层上有一个postgresql RDS实例。我本应该使用EB,但直到我有了很多东西,才真正了解它,我对重新开始一个新的ami并不感到兴奋。我正在尝试构建与db的第一次交互,其中有一个名为server_config的表,创建为: CREATE TABLE SERVER_CONFIGS ( config_key VARCHAR(63) NOT NULL, config_value VARCHAR(63) NOT NULL, UNIQUE (config_key)
CREATE TABLE SERVER_CONFIGS
(
config_key VARCHAR(63) NOT NULL,
config_value VARCHAR(63) NOT NULL,
UNIQUE (config_key)
);
INSERT INTO SERVER_CONFIGS (config_key,config_value)
VALUES ('ClientMustVerify','TRUE');
INSERT INTO SERVER_CONFIGS (config_key,config_value)
VALUES ('Auditing','FALSE');
COMMIT;
在我的django应用程序中,我有:
models.py:
from django.db import models
class serverConfig(models.Model):
config_key = models.CharField(max_length=63)
config_value = models.CharField(max_length=63)
view.py的摘录:
from limbo.models import serverConfig
def editServer(request):
myConfigs = serverConfig.objects.all()
configHtml = ""
# for item in myConfigs #serverConfig.objects.values()
# configHtml += item.config_key + "\t" + item.config_value + "\n"
if request.method == 'POST':
form = serverForm(request.POST)
if form.is_valid():
integer = form.cleaned_data['int_field']
request.session['integer'] = integer
# call out to limboLogic.py to update values, add them to the session
message = 'The value \'' + str(integer) + '\' has been updated.'
return render(request, 'limboHtml/ServerConfiguration.html', {'form': form, 'SubmitMessage': message, 'CurrentConfigs': myConfigs})
else:
message = 'The server configuration has NOT been updated.' + '\n'
message += ', '.join("%s=%r" % (key,val) for (key,val) in form.errors.iteritems()) + '\n'
# message += ', '.join("%s=%r" % (key,val) for (key,val) in form.non_field_errors.iteritems()) + '\n'
return render(request, 'limboHtml/ServerConfiguration.html', {'form': form, 'SubmitMessage': message, 'CurrentConfigs': myConfigs})
# if a GET (or any other method) we'll create a blank form
try:
del request.session['integer']
except KeyError:
pass
form = serverForm()
return render(request, 'limboHtml/ServerConfiguration.html', {'form': form, 'SubmitMessage': '', 'CurrentConfigs': myConfigs})
错误消息:
文件
“/home/ec2 user/limbo/limboenv/local/lib/python2.7/site packages/django/db/backends/utils.py”,
第64行,在execute中
返回self.cursor.execute(sql,params)编程错误:关系“limbo_serverconfig”不存在第1行:…ig_键“,
“limbo_服务器配置”“limbo_服务器”中的“配置值”
为什么它会在桌子的开头加上“limbo_uu”?我能改变这个吗?我是否应该在表格中使用我的应用程序名(或者是我的项目名?它们被称为同一个名称…愚蠢的投票教程)
Django 1.10和python 2.7在ec2上的linux ami上为每个模型创建一个表。表的默认名称为
app\u name+'\u'+model\u name
。如果不想将其作为表名,可以通过在模型的元类中指定db_table
来覆盖它
参考:
建议
请不要使用与项目同名的应用程序来编写应用程序逻辑。该应用程序应始终只包含项目设置Django为您的每个模型创建一个表。表的默认名称为
app\u name+'\u'+model\u name
。如果不想将其作为表名,可以通过在模型的元类中指定db_table
来覆盖它
参考:
建议
请不要使用与项目同名的应用程序来编写应用程序逻辑。该应用程序应该始终只包含在另一个地方出现的项目设置,因为我试图弄清楚这一点,但在sql workbench中没有证据表明存在这样的表。我是否应该首先按照limbo_server_配置创建表?@Keith第一次设置django项目时,应该创建数据库,并为django=1.9运行
python manage.py syncdb
。此命令创建所有必需的db表。在运行之前,请确保首先执行python manage.py makemigrations
(limboenv)[ec2]-user@ip-172-31-XX-XXX limboproj]$python limbo/manage.py要执行的迁移操作:应用所有迁移:admin、auth、contenttypes、,运行迁移的会话:没有要应用的迁移。@Keith您做过makemigrations吗?是:$python limbo/manage.py makemigrations未检测到任何更改(limboenv)[ec2]-user@ip-172-XX-XX-XXX limboproj]$python limbo/manage.py要执行的迁移操作:应用所有迁移:admin、auth、contenttypes、,运行迁移的会话:没有要应用的迁移。
在我试图弄清楚这一点时,在另一个地方出现了这种情况,但在sql workbench中没有证据表明存在这样的表。我是否应该首先按照limbo_server_配置创建表?@Keith第一次设置django项目时,应该创建数据库,并为django=1.9运行python manage.py syncdb
。此命令创建所有必需的db表。在运行之前,请确保首先执行python manage.py makemigrations
(limboenv)[ec2]-user@ip-172-31-XX-XXX limboproj]$python limbo/manage.py要执行的迁移操作:应用所有迁移:admin、auth、contenttypes、,运行迁移的会话:没有要应用的迁移。@Keith您做过makemigrations吗?是:$python limbo/manage.py makemigrations未检测到任何更改(limboenv)[ec2]-user@ip-172-XX-XX-XXX limboproj]$python limbo/manage.py要执行的迁移操作:应用所有迁移:admin、auth、contenttypes、,运行迁移的会话:没有要应用的迁移。