來到資料庫一章,我的心還是很矇的。
雖說自己之前sql寫的666,但是你讓我建模我還真沒幹過啊!
然後狗書裡用的還是sqlalchemy,用物件導向來理解資料庫,我選擇godie,我知道為什麼叫狗書了...
開玩笑啦。
不過說實話,是有些懵。
因為你在這個框架裡呆的時間還很短,什麼都不知道,你不知道這個框架為你做了什麼,你就像乙個瞎子一樣,只能靠著狗書的引導。
但狗書畢竟是面向所有人,肯定有你不知道的問題。
而且坑爹的是,狗書既然把引數配置成false了...大家可以看一下5a...
現在在命令列測試資料庫操作,竟然都沒報錯,只是sqlalchemy好心的給我提示了一大堆告警,我勇敢的選擇了忽視.....
其實最難理解的還是下面這一段**,定義的兩張表的關係,和後面導致的資料庫操作的一些命令的改變。
我還是貼一下出來,後續我們還是先分析一下2張表的關係吧。
classrole(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了,今天重新撿起來,一切又開始陌生了。強迫自己看下去,也算是有了收穫。以前大概到這裡就開始沒有怎麼實際寫過 了,其實看書,和實際寫 還真是差的很遠。剛看了沒多久,由於自己現在是自己手敲,所以走了一些彎路,但這些彎路其實對於成長來說,還真是很有用的。這裡我舉個剛剛遇到的例...