今天,我将与您分享Django如何了解多个数据库表。其中,Django和MySQL数据库已经解释了数据库的解释。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
本文目录清单:
1. Django Tutorial-02连接到初始化数据库2.如何求解Django的多数据库的问题3.如何在Pycharm下连接MySQL数据库?6。如何在Django插图中使用多个数据库Django教程并使用
在上面的文章中,引入了安装Django的方法。让我们谈谈在此处连接数据库。
本文主要介绍坑和解决方案
正常连接和初始化数据库的命令是
执行此命令时,出现以下错误
在调查一部分之后,当我配置数据库时,我设置了一层默认值并将其修改如下。
然后,当您继续执行迁移时,您将报告以下错误
该机器的环境是Mac计算机。在官方教程上操作时,发现使用MySQLClient安装的Python软件包将取决于MySQL或MySQL-CLIENT的安装,但是当我安装MySQL和MySQL-CLIENT时,我发现了解决方案。后来发现在settings.py文件中,添加了以下代码,即可以连接pymsql。
或者可以在settings.py中添加代码__init__.py
然后执行python manage.py迁移命令,以发现该表是成功创建的。新表不影响原始库的其他表。
选择“开始”菜单→程序→[管理SQL Server 2008]→[SQL Server Management Studio]命令,打开[SQL Server Management Studio]窗口,然后使用Windows或SQL Server身份验证来建立连接。
在[对象资源管理器]窗口中展开服务器,然后选择[数据库]节点
右 - 单击[数据库]节点,从pop -up快捷方式菜单中选择[新数据库]命令。
执行上述操作后,[新数据库]对话框将弹出。对话框和左侧有3个选项,即[常规],[选项]和[文件组]。完成设置后这三个选项,数据库的创建已完成。
输入数据库的名称,以在[数据库名称]中创建一个新数据库。例如,这是“新数据库”。
在文本框中输入新数据库的所有者,例如sa.cording,以使用数据库,选择或禁用[全文索引]复选框。
在[数据库文件]列表中包括两行,一个是数据库文件,另一个是日记文件。ADD或通过单击下面的[add]和[删除]按钮删除数据库文件。
切换到[可选页面],您可以在其中设置数据库的排序规则,恢复模式,兼容性级别和其他属性。
切换到[文件组]页面,您可以在此处添加或删除文件组。
完成上述操作后,单击[确定]按钮以关闭[新数据库]对话框。在这一点上,成功创建了“新数据”数据库。可以在[Object Resource Manager中看到新构建的数据库] 窗户。
方法/步骤
修改设置中的数据库
数据库= {
'默认': {
'引擎':'django.db.backends.mysql',
“名称”:'书籍',#your数据库名称
“用户”:“ root”,#your数据库用户名
'密码':'',#your数据库密码
'主机':'',#your数据库主机,停留在localhost的简短默认值中
'端口':'3306',#your数据库端口
}
}
instasted_apps =((
“书籍”,#您的数据库名称
治愈
在MySQL中创建书籍数据库
检查是否有语法错误
使用python manage.py sqlall书籍显示mysql语法
在Python Manage.py同步同步模型中使用数据库
成功的创造!
让我们回忆第5章中有关书籍(书)的数据模型:
1
来自django.db导入模型
类出版商(Models.Model):
name = models.charfield(max_length = 30)
地址= model.Charfield(max_length = 50)
city = models.charfield(max_length = 60)
state_provring = model.charfield(max_length = 30)
country = models.charfield(max_length = 50)
网站= models.urlfield()
def __unicode __(self):
返回self.name
班级作者(Models.Model):
first_name = models.charfield(max_length = 30)
last_name = models.charfield(max_length = 40)
电子邮件= models.emailfield()
def __unicode __(self):
返回u'%s%s'%(self.first_name,self.last_name)
课程(Models.Model):
title = models.charfield(max_length = 100)
作者= model.manytomanyfield(作者)
publisher = models.foreignkey(发布者)
publication_date = model.datefield()
def __unicode __(self):
返回self.title
例如,在第5章的解释中,数据库对象的特定字段的值只需要直接使用属性。例如,要确定具有ID的书的标题,我们要这样做:这样做:
来自mysite.books.models导入书籍
b = book.objects.get(id = 50)
B.神经
你的django书'
但是,有一个相关的对象字段,我们没有提及它是外国基金会或Manytomanyfield,它们的影响略有不同。
访问密钥的价值(外键)
当您获得外国键字段时,您将获得相关的数据模型对象。例如:
b = book.objects.get(id = 50)
B.Publisher
出版商:Apress Publishing
b.publisher.website
让我们回忆第5章中有关书籍(书)的数据模型。dbimdjango.dbimportmodelsclasspublisher(models.model):name = models.charfield(max_length = 30)地址= models.ChaLfield.ChaLfield(max_lks.lks.lks.lks.lks.chapter 5数据库对象的特定字段仅需要直接使用该属性。例如,要确定具有ID的书的标题,我们要这样做:frofmysite.books.modelsimportbookb = book.objects.get(id = 50)b.titleu'thedjangobook',但是以前,有一个我们之前没有提及的是外国基础或Manytomanyfield的相关对象字段,它们略有不同。当您访问外国钥匙值时,当您获得外国基础字段时,您将获取相关的数据模型对象。例如:b = book.objects.gets(id = 50)b.publisherb.publisher.websiteu'''''''''''''''''''''''在恋爱关系的另一端相反,由于ymmetric关系。通过````Publisher'`````````````````````````````''``````````````````````oppuline book_set.all(),如下:()[,]实际book_set只是一个QuerySet(请参阅第5章),因此它可以实现数据过滤和除法等QuerySet,例如:1p = publisher.objects.gets.get(name ='apreSperpublishing')p.book_set.set.filter(名称__icontains ='django')[,]属性name book_set由带有模型名称的小写(例如book)组成。Mart-to-manyvalues与多价值(多个到多人)相同,但是我们正在处理QuerySet,而不是模型实例。例如,如何查看本书的作者:B = book.objects.gets(id = 50)b.authors.all()[,)[,] B.authors。过滤器(first_name ='adrian')[] b.authors.filter(first_name ='adam')[]反向查询。要查看作者的所有书籍,请使用rution.book_set,就像这样:a = a =rutury.objects.get(first_name ='admin', last_name ='holovaty')a.book_set.all()[,]就像使用foreferkey字段一样,属性名称book_set是在数据模型(模型)之后添加的。更改数据库模式(databaseschema)3当我们介绍syncdb命令时在第5章中,我们注意到SynCDB仅在数据库中创建一个表。如果您在数据模型中添加或修改字段,或删除数据模型,则需要在数据库中手动修改它。此部分将解释如何说明如何解释如何说明如何解释。做到:当修改处理模型时,请记住DJANGO数据库层的工作流程很重要。如果模型包含一个尚未在数据库中建立的字段,Django会报告错误的信息。它将导致错误。您首先使用django数据库API请求表(也就是说,它将在运行时造成错误而不是编译).3django不在乎数据库表中的模型中是否没有定义列。django不关心是否有形式1更改模型的模型体系结构意味着需要更改Python代码和数据库以按顺序更改。模型),要使用的技术是使用Django来不关心模型中的列的特征是否无关。该策略是在数据库中添加字段,然后同步Django模型以包含新字段。3但是,这里有鸡肉和鸡肉的问题。因为您想知道新添加的SQL语句,所以您需要使用django的manage.pysqlass命令来查看它,这需要模型中存在的字段。(注意:您不必使用相同的SQL语句与Django创建一个新领域,但这确实是一个好主意,可以使所有内容保持同步。) 3解决这个鸡肉蛋的问题的解决方案是在环境中开发这种变化,而不是发布环境。(您正在使用测试/开发环境,对吗?)以下是特定的实现步骤。首先,输入开发环境(即不在发行环境中):将字段添加到您的型号。lunmanage.pysqlass [yourawp]以测试新的createtable语句。请注意新字段的定义。打开数据库的交互式命令界面(用于例如,psql或mySQL,也可以使用manage.pydbshell)。执行可更可靠的语句添加新列表。使用python's manage.pyshell验证是否通过导入模型和选择表单正确添加了新字段(例如,myModel。如果您使用控制工具的特定版本,并且在第一步中,已经提交了开发环境中的修改。现在,您可以在生产环境中更新代码(例如,如果使用颠覆,请执行svnupdate。restart Weberver使修改有效。让我们练习,例如在第5章中将num_pages字段添加到书籍模型中。首先总体而言,我们将将开发环境中的模型更改为以下表格:classBook(models.model):titlef__unicode __(self):return selfs.title
使用多个数据库时,数据库连接数据导入和导出
使用和数据库之间的区别是:
如果不是Defalut(默认数据库),请在streatings.py中添加与命令之后数据库的settings.py相对应的名称。
数据库同步(创建表)
python manage.py syncdb #synchronous默认数据库,与原始
#synchronous数据库DB1(注意:不是数据库名称是db1,settings.py中的db1,但是您可以使这两个名称相同且易于使用)
python manage.py syncdb -database = db1
数据输出
python manage.py dumpdata app1 -database = db1 app1_fixture.json
python manage.py dumpdata app2 -database = db2 app2_fixture.json
python manage.py dumpdata auth_fixture.json
数据库指南
python manage.py loaddata app1_fixture.json -database = db1
python manage.py loaddata app2_fixture.json -database = db2
关于如何通过多个数据库表以及Django和MySQL数据库引入Django。这就是结局。我想知道您是否从中找到了所需的信息?如果您想进一步了解此信息,请记住要收集对该网站的关注。