1. 程式人生 > >Django 學習筆記(七)資料庫基本操作(增查改刪)

Django 學習筆記(七)資料庫基本操作(增查改刪)

1.建立一個專案

2.建立一個應用

3.更改settings.py

4.更改models.py

5.同步資料

二、安裝IPython方便debug

sudo apt-get install ipython3

安裝成功後用python manage.py shell 會自動進入Ipython互動直譯器中,沒有安裝Ipython只有前兩行程式碼,只進入到Python shell 中。

Python 3.5.2+ (default, Sep 22 2016, 12:18:14) 
Type "copyright", "credits" or "license" for more information.

IPython 2.4.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: 

如果直接啟用Ipython3的話,也可以出現以下程式碼,但是由於沒有定位在那個位置,將會出現ImproperlyConfigured錯誤。原因是直接啟動Ipython互動直譯器,沒有設定Django的環境變數DJANGO_SETTINGS_MODULE,新增上環境變數即可執行,所以還是推薦直接執行Python manage.py shell命令。

ImproperlyConfigured                      Traceback (most recent call last)
<ipython-input-1-df0154182ca0> in <module>()
----> 1 from blog.models import Person /home/lee/MySQL1/blog/models.py in <module>() 1 from django.db import models 2 ----> 3 class Person(models.Model): 4 name = models.CharField(max_length=10) 5 /home/lee/MySQL1/blog/models.py in Person() 2 3 class Person(models.Model):
----> 4 name = models.CharField(max_length=10) 5 6 def __str__(self): /home/lee/.local/lib/python3.5/site-packages/django/db/models/fields/__init__.py in __init__(self, *args, **kwargs) 1059 1060 def __init__(self, *args, **kwargs): -> 1061 super(CharField, self).__init__(*args, **kwargs) 1062 self.validators.append(validators.MaxLengthValidator(self.max_length)) 1063 /home/lee/.local/lib/python3.5/site-packages/django/db/models/fields/__init__.py in __init__(self, verbose_name, name, primary_key, max_length, unique, blank, null, db_index, rel, default, editable, serialize, unique_for_date, unique_for_month, unique_for_year, choices, help_text, db_column, db_tablespace, auto_created, validators, error_messages) 170 self.db_index = db_index 171 self.db_column = db_column --> 172 self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE 173 self.auto_created = auto_created 174 /home/lee/.local/lib/python3.5/site-packages/django/conf/__init__.py in __getattr__(self, name) 54 """ 55 if self._wrapped is empty: ---> 56 self._setup(name) 57 val = getattr(self._wrapped, name) 58 self.__dict__[name] = val /home/lee/.local/lib/python3.5/site-packages/django/conf/__init__.py in _setup(self, name) 37 "You must either define the environment variable %s " 38 "or call settings.configure() before accessing settings." ---> 39 % (desc, ENVIRONMENT_VARIABLE)) 40 41 self._wrapped = Settings(settings_module) ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
ImproperlyConfigured

解決辦法是將下面三行程式碼寫上,其中MySQL1是專案的名稱,在本文中專案名稱是MySQL1。

import os,django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "MySQL1.settings")
django.setup()

三、新增資料

1.第一種方式,建立類的例項物件,修改物件的屬性,儲存。

In [1]: from blog.models import Person

In [2]: p1=Person()

In [3]: p1.name='Lee'

In [4]: p1.save()

2.第二種方式,直接在類例項化的時候,構造方法直接給予欄位屬性,儲存。

In [5]: p2=Person(name='Kein')

In [6]: p2.save()

3.第三種方法,呼叫類管理器中的create方法。

In [7]: p3=Person.objects.create(name='KeinLee')

MySQL資料庫內容:

四、查詢資料

1.查詢全部

In [8]: Person.objects.all()
Out[8]: <QuerySet [<Person: Lee>, <Person: Kein>, <Person: KeinLee>]>

如果出現全部都是Person: Person Object ,請在blog/models.py中新增__str__,返回字元方法。

from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=10)
    
    def __str__(self):
        return self.name

2.查詢特定條件,filter相當於=,exclude相當於!=,get直接得出物件而不是QuerySet物件。

In [9]: Person.objects.filter(name='Lee')
Out[9]: <QuerySet [<Person: Lee>]>

In [10]: Person.objects.exclude(name='Lee')
Out[10]: <QuerySet [<Person: Kein>, <Person: KeinLee>]>

In [11]: Person.objects.get(name='Lee')
Out[11]: <Person: Lee>

五、修改資料

在查詢資料的基礎上修改,一個是filter修改,另一個是get修改,這兩種方法是不一樣的,因為查詢結果的物件不一樣。

In [12]: Person.objects.filter(name='Kein').update(name='Ben')
Out[12]: 1

In [13]: p=Person.objects.get(name='Lee')

In [14]: p.name='Alen'

In [15]: p.save()

六、刪除資料

刪除資料就直接在查詢資料的基礎上加一個.delete()即可。

In [16]: Person.objects.get(name='Lee').delete()
Out[16]: (1, {'blog.Person': 1})

In [17]: Person.objects.filter(name='Kein').delete()
Out[17]: (1, {'blog.Person': 1})

In [18]: Person.objects.exclude(name='Lee').delete()
Out[18]: (1, {'blog.Person': 1})

系列下一篇:

相關推薦

Django 學習筆記資料庫基本操作

1.建立一個專案 2.建立一個應用 3.更改settings.py 4.更改models.py 5.同步資料 二、安裝IPython方便debug sudo apt-get install ipython3 安裝成功後用python manage.py shell 會自動進入Ipython互動直譯器中,沒

學習筆記:python3,一些基本語句2017

val from 列表 除法 方法 是否 主程 return tuple 數學運算 1、整除、取模 a = 36 b = 10 c = d = 0 c = a//b #取整除 - 返回商的整數部分 d = a % b #取模 - 返回

Linux學習筆記周一次課3月19日

w vmstat top sar nload 10.1 使用w查看系統負載10.2 vmstat命令顯示狀態,每一秒一次,共5次,命令為#vmstat 1 5r,run表示運行;b,block表示阻塞,阻止;swpd,虛擬內存,若這個值大於0,表示內存不夠用;si磁盤輸入虛擬內存;so虛擬

Linux學習筆記周三次課3月21日

iptables netfilter INPUT OUTPUT ifconfig 10.11 Linux網絡相關ifconfig -a可以顯示禁止或down掉的網卡;啟動網卡#ifup ens33;禁掉網卡#ifdown ens33;網卡配置文件 /etc/sysconfig/networ

Linux學習筆記周五次課3月23日

iptables-save iptables-restore systemctl firewalld firewall-cmd 10.19 iptables規則備份和恢復備份保存,#iptables-save > ipt.txt恢復, #iptables-restore <

《C語言程式設計:現代方法第2版K.N.King 著學習筆記三:C語言基本概念2

2.3 註釋 每一個程式都應該包含識別資訊,即程式名、編寫日期、作者、程式的用途以及其他相關資訊。C語言把這類資訊放在註釋(comment)中。 符號 /* 標記註釋的開始,而符號 */ 則標記註釋

《C語言程式設計:現代方法第2版K.N.King 著學習筆記四:C語言基本概念3

2.5 讀入輸入 為了獲取輸入,就要用到 scanf 函式。它是C函式庫中與 printf 相對應的函式。scanf 中的字母 f 和 printf 中的字母 f 含義相同,都是表示“格式化”的意思

《C語言程式設計:現代方法第2版K.N.King 著學習筆記五:C語言基本概念4

2.7 識別符號 在編寫程式時,需要對變數、函式、巨集和其他實體進行命名。這些名字稱為識別符號(identifier)。在C語言中,識別符號可以含有字母、數字和下劃線,但是必須以字母或者下劃線開頭。

《C語言程式設計:現代方法第2版K.N.King 著學習筆記六:C語言基本概念5

問與答 GCC 最初是 GNU C Compiler 的簡稱。現在指 GNU Compiler Collection,這是因為最新版本的 GCC 能夠編譯用 Ada、C、C++、Fortran、Ja

MySql cmd下的學習筆記 —— 有關多表查詢的操作多表查詢練習題及union操作

image ins myisam name sam row div mysq gin 先建立一張 m 表 mysql> create table m ( -> mid int, -> hid int, -> gid in

Mysql 資料庫基本操作1

1、庫的管理 1)庫的基本操作: ①檢視所有庫:show databases; ②建立庫(指定字符集):create database 庫名 character

JDBC資料庫基本操作

1.什麼是JDBC? 在看JDBC的概念之前先來看看什麼是資料庫驅動。 資料庫驅動中驅動的概念和平時聽到的那種驅動的概念是一樣的,比如平時購買的音效卡,網絡卡直接插到計算機上面是不能用的,必須要安裝相應的驅動程式之後才能夠使用音效卡和網絡卡,同樣道理,我們安裝好資料庫之後,我們的應用程式也是不能直接使用資

Linux學習筆記29——Linux的許可權相關操作user、group部分相關操作

這裡跟一般的信源編碼略有一些區別,比如程式還需要有一定的可讀性,因而需要引入額外的冗餘,要不然就會像brainfuck或者花式perl一樣沒法看了。這件事可以理解為兩種效果的混合:第一,我們希望程式中不僅編碼進執行的資訊,還編進一部分設計思想,這可以看作是程式設計的額外需求;第二,我們需要程

資料結構學習之路4 佇列的基本操作順序儲存的迴圈佇列+連結串列實現

佇列先進先出,這裡用了順序(陣列)和鏈式兩種方式實現,下次再用鏈式儲存實現以下堆疊試試 迴圈佇列: //順序儲存結構的迴圈佇列 #include<iostream> using namespace std; #define MAXSIZE 100 typedef

SQL server 練習1SQL server 資料庫基本操作

  本篇部落格用來記錄,編者做sql server練習的題目及解答,以及遇到的一些問題和總結。 題目 1、資料庫建立 名稱:stuManage 主資料檔案: 邏輯檔名:stuManage_M_data 物理檔名:stuManage__data

matlab與機器學習程式基本操作含程式碼解析

備註:%%之間的為註釋內容%%,%註釋後面的內容             matlab形成自己的程式設計風格更有利於簡潔的程式設計介面             影象的初步處理可應用於論文撰寫上,文章更有說服力             程式除錯有利於發現邏輯問題,都是必備的基

thinkphp5.0 資料庫基本操作

連結資料庫 一共有三種模式,一般第一種就夠了 第一種直接配置application裡面的database.php檔案 // 伺服器地址 'hostname' => '1

MySQL資料庫基本操作DDL

1.mysql -hlocalhost -uroot -p123   登陸 2.show databases;   檢視資料庫資訊 3.use XXX;    使用XXX資料庫 4.show tables;   檢視資料表 5.如何通過命令更改使用者資訊 use mysql

資料庫基本操作 DML語句:對資料庫表記錄的操作

以下語句要注意逗號,分號的中英文,不要直接複製 插入記錄 mysql>insert into emp(age1,ename,birth,hiredate,sal,depton)valu

mysql資料庫基本操作

資料表操作 基礎操作 1.建立表(類似於一個excel表) create table tab_name( field1 type[完整性約束條件], field2 type, ... field