<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 設計模型 ## 設計介紹 * **學生表結構設計** * **表名:students** * **學生名:stu\_name** * **學生班級:stu\_grade** * **學生性別:stu\_sex** * **班級表結構設計** * **表名:grades** * **班級名:gra\_name** * **班級人數:gra\_number** ## 數據庫配置 * 在settings.py文件中,通過DATABASES項進行數據的配置 * 配置mysql數據庫 ```text DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # } 'default':{ 'ENGINE':'django.db.backends.mysql', 'NAME':'miku', 'USER':'root', 'PASSWORD':'123456', 'PORT':3306, } } ``` * 解釋: * 'ENGINE':選擇數據庫,可為 'django.db.backends.postgresql\_psycopg2', 'django.db.backends.mysql', 'django.db.backends.sqlite3', 'django.db.backends.oracle' * NAME':實際mysql1的database的名字,并不是數據庫的名字 * ‘USER’:'root',\#mysql數據庫用戶名 * 'PASSWORD':用戶對應的密碼 * 'HOST':數據庫主機地址 * 'POST':數據庫端口,默認端口為3306 * 在控制平臺中輸入mysql -u root -p * 輸入密碼:123456 * 創建與之對應的數據庫名miku ## 創建應用 * 創建應用命令 ```text python manage.py startapp myapp ``` * 應用的目錄結構圖 ![](https://box.kancloud.cn/dd4b6a58837a889935a2f74ff88ef117_270x194.png) ## 定義模型類 * 一個數據表對應一個類 * 在models.py文件中,定義模型類 * 引入包名from django.db import models * 模型類繼承自models.Model類 * 當輸出兌現時;會調用對象的str方法 _tips:不需要定義主鍵列,在生成的時候自動添加,并且值為自動增長_ ```text # model.py from django.db import models # Create your models here. class grades(models.Model): gra_name = models.CharField(max_length=20) gra_number = models.IntegerField() def __str__(self): return "第%d個 | %s班 | 共有%d人數" % (self.pk,self.gra_name,self.gra_number) class students(models.Model): stu_name = models.CharField(max_length=20) stu_grade = models.ForeignKey("grades",on_delete=models.CASCADE) stu_sex = models.BooleanField() stu_date = models.DateTimeField() def __str__(self): return "第%d個 | 姓名:%s | %s班 | 性別:%d |日期:%s" % \ (self.pk, self.stu_name, self.stu_grade,self.stu_sex,self.stu_date) ``` ## 生成數據表 * 激活模型:編輯settings.py文件,將myapp應用加入到installed\_apps中 * ```text # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myapp', ] ``` * 生成遷移文件:根據模型類生成sql語句 ```text python manage.py makemigrations ``` ```text django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclient? 如果遇到這樣的錯誤 需要安裝pymysql模塊 命令安裝:pip install pymysql 然后再django項目的__init__下設置: import pymysql pymysql.install_as_MySQLdb() ``` ```text TypeError: __init__() missing 1 required positional argument: 'on_delete' 錯誤代碼: stu_grade = models.ForeignKey("grades") 修改后: stu_grade = models.ForeignKey("grades",on_delete=models.CASCADE) ``` ```text django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)") 這是由于用的mysql版本太新了,換成5.7版本的 mysql下載地址:https://dev.mysql.com/downloads/file/?id=478035 ``` ![](https://box.kancloud.cn/7f687c3f45dcf328fc3e645c85d4bdc6_777x125.png) * 執行遷移:執行sql語句生成數據表 ```text python manage.py migrate ``` ![](https://box.kancloud.cn/8aa072e53103ea2bc6bc864dc2a263da_813x485.png) ## 測試數據操作 * 進入python shell,進行簡單的模型api練習 ```text python manage.py shell ``` * 進入shell后提示如下: ![](https://box.kancloud.cn/5a38c489c688c91855e6c4157e59753e_815x195.png) * 引入需要的包: ```text In [1]: from myapp.models import grades,students In [2]: from django.utils import timezone In [3]: from datetime import * ``` * 查詢所有班級信息 ```text In [4]: grades.objects.all() Out[4]: <QuerySet []> ``` * 新建班級信息 ```text In [5]: a = grades() In [6]: a.gra_name="1" In [7]: a.gra_number=2 In [8]: a.save() In [9]: a Out[9]: <grades: 2> ``` * 查找班級信息 ```text In [4]: grades.objects.get(pk=1) Out[4]: <grades: 第1個 | 班 | 共有25人數> In [5]: grades.objects.get(pk=2) Out[5]: <grades: 第2個 | 1班 | 共有2人數> In [6]: a = grades.objects.get(pk=2) In [7]: a Out[7]: <grades: 第2個 | 1班 | 共有2人數> ``` * 修改班級信息 ```text In [9]: a = grades.objects.get(pk=1) In [10]: a.gra_name = "2" In [11]: a Out[11]: <grades: 第1個 | 2班 | 共有25人數> ``` * 刪除班級信息 ```text In [16]: a.delete() Out[16]: (1, {'myapp.students': 0, 'myapp.grades': 1}) ``` ## 關聯對象的操作 * 對于students表可以按照以上操作方式進行 * 添加、注意添加關聯對象 ```text In [34]: a = grades.objects.get(pk=2) In [35]: a Out[35]: <grades: 第2個 | 2班 | 共有26人數> In [36]: b = students() In [37]: b.stu_name = "miku" In [38]: b.stu_grade = a In [39]: b.stu_sex = 1 In [40]: b.stu_date = datetime(year=2017,month=10,day=26) In [41]: b.save() E:\Python36\lib\site-packages\django\db\models\fields\__init__.py:1423: RuntimeWarning: DateTimeField students.stu_date received a naive datetime (2017-10-26 00:00:00) while time zone support is active. RuntimeWarning) In [42]: b Out[42]: <students: 第1個 | 姓名:miku | 第2個 | 2班 | 共有26人數班 | 性別:1 |日期:2017-10-26 00:00:00> ``` ![](https://box.kancloud.cn/e48bdf9fd016dc1dad26f5ee1aacdd5f_1024x463.png) * 獲得關聯集合:返回當前grades對象的所有students對象 grades對象.students對象名\_set.all\(\) ```text In [43]: a.students_set.all() Out[43]: <QuerySet [<students: 第1個 | 姓名:miku | 第2個 | 2班 | 共有26人數班 | 性別:1 |日期:2017-10-26 00:00:00+00:00>]> ``` * 有一個students存在,必須要有一個grades對象,提供了創建關聯的數據 a.students.\_set.create\(\) ```text In [44]: b = a.students_set.create(stu_name="miku",stu_sex=False,stu_date=datetime(year=2016,month=5,day=26) ...: ) E:\Python36\lib\site-packages\django\db\models\fields\__init__.py:1423: RuntimeWarning: DateTimeField students.stu_date received a naive datetime (2016-05-26 00:00:00) while time zone support is active. RuntimeWarning) In [45]: b Out[45]: <students: 第2個 | 姓名:miku | 第2個 | 2班 | 共有26人數班 | 性別:0 |日期:2016-05-26 00:00:00> ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看