Python學習筆記 6 2 2 資料庫與ORM

2021-10-02 18:43:21 字數 3744 閱讀 8508

前言:本文是學習網易微專業的《python全棧工程師 - flask高階建站》課程的筆記,歡迎學習交流。同時感謝老師們的精彩傳授!

一、課程目標

二、詳情解讀

2.1.資料庫入門

2.1.1.資料庫用來儲存資料,根據儲存方式不同分為:

1.關係型資料庫 - 以檔案方式永久的儲存到磁碟

2.非關係型資料庫 - 儲存在記憶體,訪問速度很快,通常用來做佇列,快取之類的服務

2.1.2.關係型資料庫儲存方式:

表中的每一行由多個字段組成,代表乙個使用者,這在資料庫設計中,乙個使用者表述為乙個實體

2.1.3.乙個資料庫包含多張表:

如何提高資料庫的效能是我們學習的重點!

2.1.4.資料庫軟體:

1.資料庫軟體提供的是資料庫支援服務,有很多產品,比如sqlite、mysql、mssql、oracle

2.一般的關係型資料庫都需要先啟動乙個資料庫伺服器

3.sqlite是乙個輕量的文字資料庫,python自帶,無需安裝,也無需啟動伺服器

4.python需要使用對應的資料庫客戶端模組才能訪問資料庫

5.所有的關係型資料庫都使用sql語言對資料庫進行curd操作(建立,更新,讀取,刪除)

2.2.orm與sqlalchemy

2.2.1.orm是什麼

2.2.2.sqlalchemy是什麼

sqlalchemy是一款orm具體實現的庫。在flask中,可以使用flask_sqlalchemy外掛程式,外掛程式安裝:

pip install flask-sqlalchemy
安裝成功後,會生成名為flask_sqlalchemy模組,資料查詢:

2.3.配置sqlalchemy

2.3.1.建立資料庫物件

from flask_sqlalchemy import sqlalchemy

# 新增配置,否則資料庫會報警告

'sqlalchemy_track_modifications']=

true

# 配置資料庫

'sqlalchemy_database_uri']=

"sqlite:/"

2.3.2.sqlite資料庫管理軟體

為了方便觀察建立資料表的過程,可以安裝sqlite管理模組。安裝:

pip install sqlite-web
這是一款通過web介面的方式管理資料庫。安裝後,使用:sqlite_web sqlite資料庫檔案路徑,即可管理資料庫。

2.4.建立資料模型model

2.4.1.定義資料表模型

自定義模型繼承自db.model

class

user

(db.model):id

= db.column(db.integer, primary_key=

true

) username = db.column(db.string)

password = db.column(db.string)

realname = db.column(db.string)

age = db.column(db.integer)

db.column(字段型別,可選引數):

字段型別

標識整型

integer

字串型string

文字型text

日期datetime

是否為主鍵

primary_key

2.4.2.進入flask shell環境建立資料表

建立完模型後,只是建立了python物件,但是並沒有建立資料表。還需要通過db.create_all()建立資料表

# flask shell

>>

>>

> db.create_all(

)

2.5.儲存資料

通過例項化模型物件即可建立乙個新的物件(c - 新增記錄)

step1 - 例項物件

user1 = user(username =

"wanger"

, password =

"123456"

, realname=

"王二"

)user2 = user(username =

"zhangsan"

, password =

"123456"

, realname =

"zhangsan"

)

step2 - 提交到資料庫

建立後,db.session物件可以將建立的記錄儲存到資料庫

db.session.add(user1)

db.session.add(user2)

db.session.commit(

)

2.6.orm的好處

2.6.1.orm與sql操作對比:

#sql

insert into table(username, password, realname) values(

"", "", "");

select * from table where id

= 1

# orm

user1 = user(

"wanger", "123456", "王二"

)user.query.get(1)

2.6.2.sqlalchemy開發優勢

使用原生的sql開發web會有一些如下問題:

1.資料庫產品多,sql語句可能有一定的差異,更換資料庫可能導致**重構

2.封裝性不夠,重複**多,**裡遍布sql語句,不夠優雅

3.安全性不夠,可能會有注入漏洞

ormsql操作進行了封裝:

1.更換資料庫只要更換資料庫源,無需改動**。

2.對資料庫的操作轉為對python物件(model)的操作。

3.提供了更好的安全性。

三、課程小結

day 6 22python多執行緒

殭屍程序 子程序結束,父類未結束 孤兒程序 父類程序over.子程序未結束 0號程序負責執行,1號程序負責生成,所有孤兒程序的收容所 孤兒程序 父類程序over 1號程序,永不結束 多執行緒的學習 使用執行緒的第一種方式,直接呼叫threading裡面的thread類 from threading ...

Python學習筆記一(Python資料型別)

python資料型別主要包括數字,字串,列表,元組和字典。字串,列表,元組和字典都是序列,序列最主要兩個特點是索引操作和切片操作,索引操作讓我們從序列中抓取乙個特定專案,切片操作讓我們能夠獲取序列的乙個切片,即一部分序列。1.數字 python支援五種基本數字型別,其中有三種是整數型別。int 有符...

學習筆記 Python 資料型別

資料型別 classinfo 基礎資料型別 資料型別 備註示例 number 數字 python支援四種不同的數字型別 int 有符號整型 long 長整型 也可以代表八進位制和十六進製制 float 浮點型 complex 複數 a 1string 字串 使用引號,包括str和basestring...