django demo,django1.11

  django demo,django1.11

  学习笔记,仅供参考,有错必纠。

  文章目录数据库和模型使用mysql数据库在Django下安装pymysql包创建和配置数据库模型模型概述python数据库模型-模型案例

  数据库模型Django中默认数据库是SQLite数据库,它是db.sqlite3文件。立正!数据库必须存储在文件中,但是数据库对这些文件进行统一管理,并加入一些事务和表的概念,会让我们的操作更加方便。

  在Django下使用mysql数据库

  安装pymysql包

  在cmd中键入以下代码以安装pymysql:

  我已经安装了pip pymysql,这里就不演示了。

  安装mysql客户端:

  Pip mysqlclient来了。我重新安装了MySQL客户端。

  并创建配置数据库。

  为了学好这些知识,我们先创建一个新项目mywebsite_db:

  f:\ my studio \ python studio \ goat bishop . project 01 \ django django-admin启动projectmywebsite _ db创建数据库

  语法:

  创建数据库名称默认字符集UTF8 Collate UTF8 _ General _ CI上面的代码表明创建了一个utf8编码的数据库,数据库中的英语不区分大小写。

  现在,我们创建自己的数据库mywebdb:

  创建数据库mywebdb默认字符集utf8 collate utf8 _ general _ ci

  数据库的配置在settings.py文件中有一个数据库字典,如下所示:

  数据库={

  默认:{

  引擎: django.db.backends.sqlite3 ,

   NAME: os.path.join(BASE_DIR, db.sqlite3 ),

  }

  }我们看到默认的数据库引擎是sqlite3,默认的文件是db.sqlite3

  如果我们需要使用mysql数据库,我们需要配置它:

  数据库={

  # 默认:{

  # 引擎: django.db.backends.sqlite3 ,

  # NAME: os.path.join(BASE_DIR, db.sqlite3 ),

  # }

  默认:{

  引擎: django.db.backends.mysql ,

  NAME: mywebdb ,#数据库名称,需要自己定义。

  用户: root ,

  密码: 19970928 ,#管理员密码

  主机: 127.0.0.1 ,

   PORT: 3306,#mysql端口号

  }

  }

  这时候我们还需要加入对mysql的支持,也就是在__init__中加入以下内容。mywebsite_db文件夹下的py模块:

  导入pymysql

  pymysql.install_as_MySQLdb()

  数据库的迁移是Django同步对模型所做的更改(添加字段、删除模型等)的一种方式。)到数据库。

  迁移步骤1:生成或更新迁移文件。

  Python manage.py makemigrations迁移步骤2:执行迁移脚本(更新数据库)

  Python manage.py migrate最后,我们可以看看执行迁移的SQL语言(不必要):

  python manage.py sqlmigrate

  现在,让我们进行数据库迁移:

  f:\ my studio \ python studio \ goat bishop . project 01 \ django \ my website _ dbpythonmanage . py此时进行迁移,我们报告了一个错误:

  raise配置不正确(需要mysqlclient 1.3.13或更高版本;您有%s。

  %数据库。__版本_ _)

  django . core . exceptions . improper configured:需要mysqlclient 1.3.13或更新版本;

  你有0.9.3。我在网上查了一下,我准备通过修改源代码来解决我们的问题。解决办法

  首先,注释掉F:\ software \ anaconda \ lib \ site-packages \ django \ db \ backends \ MySQL目录中base.py文件的以下部分(第35-36行):

  版本=数据库.版本信息

  #if版本(1、3、13):

  # raise配置不正确(需要mysqlclient 1.3.13或更高版本;您有% s . %数据库。_ _ version _ _)并在与base.py相同的文件夹中找到operations.py文件,并将decode更改为encode:

  def last_executed_query(self,游标,sql,params):

  #对于MySQLdb,游标对象有一个(未记录的) _executed

  #保存发送到数据库的确切查询的属性。

  #参见源代码发行版中的MySQLdb/cursors.py。

  query=getattr(cursor, _executed ,None)

  如果查询不是无:

  query=query.decode(错误=replace )

  返回查询

  对于# -。

  def last_executed_query(self,游标,sql,params):

  #对于MySQLdb,游标对象有一个(未记录的) _已执行

  #保存发送到数据库的确切查询的属性。

  #参见源代码发行版中的MySQLdb/cursors.py .

  query=getattr(cursor, _executed ,None)

  如果查询不是无:

  query=query.encode(错误=替换)

  返回查询因为不同版本的姜戈中,解码在不同的行,所以,大家可以自行搜索一下译的具体位置,再进行修改。

  现在,我们再运行一下

  f:\我的工作室\ python工作室\山羊主教。project 01 \ Django \我的网站_ db python manage。py进行迁移

  未检测到任何变化很好!问题被完美解决!

  好的,我们继续运行下面这段代码:

  f:\我的工作室\ python工作室\山羊主教。project 01 \ Django \我的网站_ db python manage。py迁移运行完毕后,它生成了这么一坨文件:

  要执行的操作:

  应用所有迁移:管理、验证、内容类型、会话

  运行迁移:

  应用contenttypes.0001 _ initial.好

  应用auth.0001 _初始.好

  应用管理员0001 _初始.好

  正在应用管理员。0002 _日志条目_删除_自动添加.好

  应用admin.0003 _日志条目_添加_操作_标志_选择.好

  正在应用内容类型。0002 _删除_内容_类型_名称.好

  应用auth。0002 _更改权限_名称_最大长度.好

  应用auth.0003 _更改用户_电子邮件_最大长度.好

  正在应用auth。0004 _更改用户_用户名_选项.好

  应用auth。0005 _ alter _ user _ last _ log in _ null.好

  正在应用auth。0006 _要求_内容类型_ 0002.好

  应用auth。0007 _更改_验证器_添加_错误_消息.好

  应用auth.0008 _更改用户_用户名_最大长度.好

  应用auth.0009 _更改用户_姓氏_最大长度.好

  应用auth.0010 _更改组名_最大长度.好

  正在应用auth.0011 _更新_代理_权限.好

  应用会话。0001 _初始.好现在,我们到关系型数据库中查看一下mywebdb数据库中的数据表:

  关系型数据库显示表格;

  -

   Tables_in_mywebdb

  -

  授权组

  授权组权限

  授权许可

  授权用户

  授权用户组

  授权用户用户权限

   django_admin_log

   django_content_type

  姜戈迁移

   django_session

  -

  一组10行(0.00秒)很好,多了一堆数据表,这些数据表是姜戈帮我们创建的。

  当我们看到这一堆数据表时,就表示,我们已经配置完成了!

  模型(型号)

  在音乐电视设计模式中,存在一个型号,它不是直接的数据库,而是属于服务器端的组成部分,型号可以和数据库进行交互,所以,我们不需要直接操纵数据库,而是操作模型就可以了。

  模型概述

  模型是提供数据信息的数据库接口。模型是数据的唯一的、确定的信息源。它包含我们所储存数据的必要字段和行为。通常,每个模型对应数据库中唯一的一张表。每个模型的实例对应数据表中的一条记录。模型说明:每个模型都是一个计算机编程语言类,每个模型都是django.db.models。模型的子类每一个模型都代表数据库中的一个表姜戈为我们提供一个自动生成的数据库访问API,也就是说我们不需要使用结构化查询语言语句,而只需要使用这些类,这样就免去了直接使用结构化查询语言语句的麻烦。

  大蟒数据库模型-模特

  对象关系映射(对象关系映射)框架对象关系映射即对象关系映射,它允许我们使用类和对象对数据库进行交互。对象关系映射是指,我们表面上操作的是对象,实际上操作的是数据库。

  对象关系映射(对象关系映射)三大特征表到类的映射数据类型的映射关系映射

  案例

  我们在mywebdb工程下创建一个名为书店的应用:

  f:\我的工作室\ python工作室\山羊主教。project 01 \ Django \我的网站_ db python manage。py startapp书店并将其注册到settings.py中:

  INSTALLED_APPS=[

   django.contrib.admin ,

   django.contrib.auth ,

   django.contrib.contenttypes ,

   django.contrib.sessions ,

   django.contrib.messages ,

   django.contrib.staticfiles ,

  书店,

  ]我们看到,书店文件夹下有一个models.py:

  这个models.py就是专门用来存放模型的。

  我们在models.py模块中创建一个书类(表),并定义一个字段(标题):

  从django.db导入模型

  #在此创建您的模型。

  课堂用书(模型。型号):

  标题=模型CharField(书名,max_length=30)

  现在!我们在煤矿管理局中更新一下迁移文件:

  f:\我的工作室\ python工作室\山羊主教。project 01 \ Django \我的网站_ db python manage。py进行迁移输出:

  "书店"的迁移:

  书店\迁移\0001_initial.py

  -创建模型手册可以看到姜戈创建了一个模型书,并且在书店\迁移路径下创建了一个0001_initial.py文件,现在,我们看一看这个文件:

  #由2013年2月2日,姜戈于2020-06-18 13:57生成

  从django.db导入迁移,模型

  类迁移(迁移。迁移):

  初始=真

  依赖关系=[

  ]

  操作=[

  迁徙。创建模型(

  name=图书,

  字段=[

  ( id ,型号AutoField(auto_created=True,primary_key=True,serialize=False,verbose_name=ID ),

  (标题,型号CharField(max_length=30,verbose_name=书名)),

  ],

  ),

  ]可以看到姜戈帮我们创建了一个模型叫书,其中包含两个字段(id和标题).

  需要注意的是,此时,我们的mywebdb数据库中没有发生任何改变。

  好吧!我们回到煤矿管理局中,执行迁移:

  f:\我的工作室\ python工作室\山羊主教。project 01 \ Django \我的网站_ db python manage。py迁移输出:

  要执行的操作:

  应用所有迁移:管理、验证、书店、内容类型、会话

  运行迁移:

  申请书店。0001 _初始.好此时,我们回到mywebdb数据库,显示数据表,发现多了一个数据表书店_书:

  关系型数据库显示表格;

  -

   Tables_in_mywebdb

  -

  授权组

  授权组权限

  授权许可

  授权用户

  授权用户组

  授权用户用户权限

  书店_书

   django_admin_log

   django_content_type

  姜戈迁移

   django_session

  -

  集合中有11行(0.00秒)我们表名一下这张数据表:

  mysql desc书店_ book

  - - - - - -

   Field Type Null Key Default Extra

  - - - - - -

   id int(11) NO PRI NULL auto _ increment

   title varchar(30) NO NULL

  - - - - - -

  集合中的2行(0.00秒)可以看到两个字段,一个编号字段,它是主键,且是自增字段;还有一个是标题字段,它是我们自己设定的字段。

  此时,我们想在模型文件models.py中再加入一个字段(酒吧):

  从django.db导入模型

  #在此创建您的模型。

  课堂用书(模型。型号):

  标题=模型CharField(书名,max_length=30)

  发布=模特CharField(出版社名,max_length=50,null=True)注意!只要我们修改了模型类,就必须要进行迁移:

  f:\我的工作室\ python工作室\山羊主教。project 01 \ Django \我的网站_ db python manage。py ma

  移民

  "书店"的迁移:

  书店\迁移\0002_book_pub.py

  -将菲尔德酒吧添加到图书中

  f:\我的工作室\ python工作室\山羊主教。project 01 \ Django \我的网站_ db python manage。py mi

  壁炉

  要执行的操作:

  应用所有迁移:管理、验证、书店、内容类型、会话

  运行迁移:

  应用宝书店。0002 _图书_出版.好

  此时在查看mywebdb数据库中的书店_书表:

  mysql desc书店_ book

  - - - - - -

   Field Type Null Key Default Extra

  - - - - - -

   id int(11) NO PRI NULL auto _ increment

   title varchar(30) NO NULL

   pub varchar(50) 是 NULL

  - - - - - -

  3行一组(0.01秒)非常好!

  转载请联系作者获得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: