Flask資料庫 ORM層面刪除資料注意事項

2021-09-28 17:56:01 字數 1948 閱讀 1608

儘管mysql預設約束型別為restric,但若不設定從表中關聯列的nullable=false,那麼通過sqlalchemy的orm刪除資料不會報錯!!

class

user

(base)

: __tablename__ =

'user'

id= column(integer,primary_key=

true

,autoincrement=

true

) username= column(string(50)

,nullable=

false

) articles = relationship(

"article"

,backref=

"tags"

)def

__repr__

(self)

:return

""% self.title

class

article

(base)

: __tablename__ =

'article'

id= column(integer,primary_key=

true

,autoincrement=

true

) title= column(string(50)

,nullable=

false

) uid = column(integer,foreignkey(

"user.id"))

author = relationship(

"user"

,backref =

"articles"

)def

__repr__

(self)

:return

""% self.title

base.metadata.drop_all(

)base.metadata.create_all(

)#新增一條資料

user = user(username=

'zhiliao'

)article = article(title=

'hello world'

)article.author = user

session.add(article)

session.commit(

)#儘管mysql預設約束型別為restric,但用sqlalchemy的orm刪除資料不會報錯!!實際步驟為:檢測到有外來鍵關聯,但發現外來鍵型別為restrict,因此先通過外來鍵找到關聯的資料,將關聯的uid設定為null,之後再刪除user。

user = session.query(user)

.first(

)session.delete(user)

session.commit(

)#要防止誤刪時restrict沒用,應該在建立外來鍵時設定nullable=false。

class

article

(base)

: __tablename__ =

'article'

id= column(integer,primary_key=

true

,autoincrement=

true

) title= column(string(50)

,nullable=

false

) uid = column(integer,foreignkey(

"user.id"

),nullable=

false

) author = relationship(

"user"

,backref =

"articles"

)

flask框架3(資料庫ORM)

flask sqlalchemy 配置 其他配置 使用class user db.model tablename user id db.column db.integer,primary key true,autoincrement true name db.column db.string 50 ...

Flask資料庫操作ORM隨筆 DB URL

貼 class person object name 111 age 18 country person類 資料庫中的一張表 person屬性 資料庫中的一張表的字段 person類的乙個物件 資料庫中表的一天資料 模型 orm 資料庫 from sqlalchemy import create e...

資料庫層面的鎖

那是一種行級鎖,一旦使用者對某個行施加了行級加鎖,則該使用者可以查詢也可以更新被加鎖的資料行,其它使用者只能查詢但不能更新被加鎖的資料行 如果其它使用者想更新該表中的資料行,則也必須對該錶施加行級鎖 即使多個使用者對乙個表均使用了共享更新,但也不允許兩個事務同時對乙個表進行更新,真正對錶進行更新時,...