重新撿起flask(七)

2022-08-03 08:42:13 字數 1807 閱讀 3524

來到資料庫一章,我的心還是很矇的。

雖說自己之前sql寫的666,但是你讓我建模我還真沒幹過啊!

然後狗書裡用的還是sqlalchemy,用物件導向來理解資料庫,我選擇godie,我知道為什麼叫狗書了...

開玩笑啦。

不過說實話,是有些懵。

因為你在這個框架裡呆的時間還很短,什麼都不知道,你不知道這個框架為你做了什麼,你就像乙個瞎子一樣,只能靠著狗書的引導。

但狗書畢竟是面向所有人,肯定有你不知道的問題。

而且坑爹的是,狗書既然把引數配置成false了...大家可以看一下5a...

現在在命令列測試資料庫操作,竟然都沒報錯,只是sqlalchemy好心的給我提示了一大堆告警,我勇敢的選擇了忽視.....

其實最難理解的還是下面這一段**,定義的兩張表的關係,和後面導致的資料庫操作的一些命令的改變。

我還是貼一下出來,後續我們還是先分析一下2張表的關係吧。

class

role(db.model):

__tablename__ = "

roles

"id = db.column(db.integer, primary_key=true)

name = db.column(db.string(64), unique=true)

users = db.relationship("

user

", backref="

role")

def__repr__

(self):

return

"" %self.name

class

user(db.model):

__tablename__ = "

users

"id = db.column(db.integer, primary_key=true)

username = db.column(db.string(64), unique=true, index=true)

role_id = db.column(db.integer, db.foreignkey("

roles.id"))

def__repr__

(self):

return

"" % self.username

users表中的每條記錄都會指定乙個roles表裡面的id欄位。

為了操作,roles表裡面加了乙個虛擬的屬性users,他其實不是乙個資料庫的字段,從她的relationship方法也可以知道。他的作用是當你新建乙個users表中的記錄時,可以直接這麼用user(username="balabala",role=some_instance_of_role).

其實就是這樣。

狗書中還說到了一對多,和什麼多對多的關係。

這個也很簡單理解,我們來懵一下。

user對role是多對一的關係,為什麼?

因為多個user都可以對應同乙個role(不看書確認了,是否打臉了?)

其實關係很簡單。

然後還要收到一些點就是,sqlalchemy'為我們自動管理的主鍵,會用整數自增,你看我們上面例項化user也知道,我們沒有指定id的值,但不會報錯。

另外,資料庫操作和git一樣,你要先add,再commit。

add支援多個,commit支不支援新增備註呢...add多個自然還出來了乙個事務問題,這個狗書上說sqlalchemy會自動保證,還是很強悍的!

哦,還有乙個很重要的是回滾,roll_back。

沒用過,如果能和git一樣,回滾到指定版本就強了,沒試過,大家可以多去搜一下吧。

總之,資料庫這一章概念較多,我們就是簡單理一下。

重新撿起flask(六)

其實到這裡來說,我發現狗書一些沒太講清楚的事情了,當然看著之前的筆記,其實我也知道自己以前也發現了一些問題。由於我們大部分都是在用拓展包,其實拓展包為我們做了一些什麼事情其實我是完全不知道的。比如現在我們重點來看一下我們test函式。test methods get post deftest for...

重新撿起flask(五)

又想蹭點東西了.這裡主要是想來複習一下jinja2模板的一些內容。之前其實很快的過了jinja2裡面寫一些if或for控制語句的東西。真到現在想直接寫一些,卻有些忘了,如果你也忘了,我們一起來回憶一些吧。ouch 上面是默寫的,也不知道是不是對的。我仿著思路再寫一下for的吧。不記得有沒有while...

重新撿起flask(四)

中間乙個禮拜沒有看過flask了,今天重新撿起來,一切又開始陌生了。強迫自己看下去,也算是有了收穫。以前大概到這裡就開始沒有怎麼實際寫過 了,其實看書,和實際寫 還真是差的很遠。剛看了沒多久,由於自己現在是自己手敲,所以走了一些彎路,但這些彎路其實對於成長來說,還真是很有用的。這裡我舉個剛剛遇到的例...