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>()ImproperlyConfigured----> 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.
解決辦法是將下面三行程式碼寫上,其中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 練習1(SQL 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