1. 程式人生 > >Django ORM------Mysql

Django ORM------Mysql

存儲 hang body ont 軟件 使用 傳遞 用戶權限 cell

ORM操作

select * from tb where id > 1

#對應關系

models.tb.objects.filter(id__gt=1)

models.tb.objects.filter(id=1)

models.tb.objects.filter(id__lt=1)

創建類

1.DB-first:根據類自動創建數據庫表

#models.py

settings.py中要註冊app

默認生成的表名為:#app01_userinfo

技術分享
from django.db import models
#create your models here.
class UserInfo(models.Model):
    
#django會默認創建一個id列,自增,主鍵 #用戶名列,字符串類型,指定長度 username = models.CharField(max_length=32) password = models.CharField(max_length=64) 項目的settings->INSTALLED_APPS=[]中,添加app,如圖: 然後命令行執行: python manage.py makemigrations python manage.py migrate #根據生成的py文件,直接生成數據庫
View Code

技術分享技術分享

項目settings.py->DATABASE={}中設置使用的數據庫:默認連接sqlite

技術分享

連接mysql配置文件:

技術分享
DATABASES = {
    default: {
    ENGINE: django.db.backends.mysql,
    NAME:dbname,
    USER: root,
    PASSWORD: xxx,
    HOST: ‘‘,
    PORT: ‘‘,
    }
}
View Code

***********註意***********

Django默認用Mysqldb模塊連接mysql,所以會報錯,應該修改為pymysql連接

在項目的__init__.py文件中,添加:
import pymysql
pymysql.install_as_MySQLdb()

2.Code-first:根據類對數據庫表中的數據進行各種操作

一、概述

1、什麽是數據庫 ?

 答:數據的倉庫,如:在ATM的示例中我們創建了一個 db 目錄,稱其為數據庫

2、什麽是 MySQL、Oracle、SQLite、Access、MS SQL Server等 ?
 答:他們均是一個軟件,都有兩個主要的功能:

  • a. 將數據保存到文件或內存
  • b. 接收特定的命令,然後對文件進行相應的操作

    PS:如果有了以上軟件,無須自己再去創建文件和文件夾,而是直接傳遞 命令 給上述軟件,讓其來進行文件操作,他們統稱為數據庫管理系統(DBMS,Database Management System)

3、什麽是SQL ?
 答:上述提到MySQL等軟件可以接受命令,並做出相應的操作,由於命令中可以包含刪除文件、獲取文件內容等眾多操作,對於編寫的命令就是是SQL語句。SQL????????,是????????????????????????????結構化語言(Structured Query Language????????)的縮寫,SQL????????????????????????????????是一種專門用來與數據庫通信的語言。

二、下載安裝

MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關系型數據庫管理系統,在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件之一。

想要使用MySQL來存儲並操作數據,則需要做幾件事情:
  a. 安裝MySQL服務端
  b. 安裝MySQL客戶端
  b. 【客戶端】連接【服務端】
  c. 【客戶端】發送命令給【服務端MySQL】服務的接受命令並執行相應操作(增刪改查等)

下載
        http://dev.mysql.com/downloads/mysql/
安裝
        windows:
            點點點
        Linux:
            yum install mysql-server
        Mac:
            點點點

Window版本

1、下載

技術分享
MySQL Community Server 5.7.16
 
http://dev.mysql.com/downloads/mysql/
View Code

2、解壓

如果想要讓MySQL安裝在指定目錄,那麽就將解壓後的文件夾移動到指定目錄,如:C:\mysql-5.7.16-winx64

3、初始化

MySQL解壓後的 bin 目錄下有一大堆的可執行文件,執行如下命令初始化數據:

技術分享
cd c:\mysql-5.7.16-winx64\bin
 
mysqld --initialize-insecure
View Code

4、啟動MySQL服務

執行命令從而啟動MySQL服務

技術分享
# 進入可執行文件目錄
cd c:\mysql-5.7.16-winx64\bin
 
# 啟動MySQL服務
mysqld
View Code

5、啟動MySQL客戶端並連接MySQL服務

由於初始化時使用的【mysqld --initialize-insecure】命令,其默認未給root賬戶設置密碼

# 進入可執行文件目錄
cd c:\mysql-5.7.16-winx64\bin
 
# 連接MySQL服務器
mysql -u root -p
 
# 提示請輸入密碼,直接回車

輸入回車,見下圖表示安裝成功:

技術分享

到此為止,MySQL服務端已經安裝成功並且客戶端已經可以連接上,以後再操作MySQL時,只需要重復上述4、5步驟即可。但是,在4、5步驟中重復的進入可執行文件目錄比較繁瑣,如想日後操作簡便,可以做如下操作。

a. 添加環境變量

將MySQL可執行文件添加到環境變量中,從而執行執行命令即可

【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名為Path 的一行,雙擊】 --> 【將MySQL的bin目錄路徑追加到變值值中,用 ; 分割】
 
如:
C:\Program Files (x86)\Parallels\Parallels Tools\Applications;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Python27;C:\Python35;C:\mysql-5.7.16-winx64\bin

如此一來,以後再啟動服務並連接時,僅需:

# 啟動MySQL服務,在終端輸入
mysqld
 
# 連接MySQL服務,在終端輸入:
mysql -u root -p

b. 將MySQL服務制作成windows服務

上一步解決了一些問題,但不夠徹底,因為在執行【mysqd】啟動MySQL服務器時,當前終端會被hang住,那麽做一下設置即可解決此問題:

# 制作MySQL的Windows服務,在終端執行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --install
 
# 移除MySQL的Windows服務,在終端執行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --remove

註冊成服務之後,以後再啟動和關閉MySQL服務時,僅需執行如下命令:

# 啟動MySQL服務
net start mysql
 
# 關閉MySQL服務
net stop mysql

Linux版本

安裝:

1 yum install mysql-server  

服務端啟動

1 mysql.server start

客戶端連接

1 2 3 4 5 6 7 連接: mysql -h host -u user -p 常見錯誤: ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2), it means that the MySQL server daemon (Unix) or service (Windows) is not running. 退出: QUIT 或者 Control+D

三、數據庫操作

1、顯示數據庫

1 SHOW DATABASES;

默認數據庫:
  mysql - 用戶權限相關數據
  test - 用於用戶測試數據
  information_schema - MySQL本身架構相關數據

2、創建數據庫

1 2 3 4 5 # utf-8 CREATE DATABASE 數據庫名稱 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; # gbk CREATE DATABASE 數據庫名稱 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

3、使用數據庫

1 USE db_name;

顯示當前使用的數據庫中所有表:SHOW TABLES;

4、用戶管理

1 2 3 4 5 6 7 8 9 10 創建用戶 create user ‘用戶名‘@‘IP地址‘ identified by ‘密碼‘; 刪除用戶 drop user ‘用戶名‘@‘IP地址‘; 修改用戶 rename user ‘用戶名‘@‘IP地址‘; to ‘新用戶名‘@‘IP地址‘;; 修改密碼 set password for ‘用戶名‘@‘IP地址‘ = Password(‘新密碼‘) PS:用戶權限相關數據保存在mysql數據庫的user表中,所以也可以直接對其進行操作(不建議)

5、授權管理

1 2 3 show grants for ‘用戶‘@‘IP地址‘ -- 查看權限 grant 權限 on 數據庫.表 to ‘用戶‘@‘IP地址‘ -- 授權 revoke 權限 on 數據庫.表 from ‘用戶‘@‘IP地址‘ -- 取消權限

  

  

Django ORM------Mysql