SQLAlchemy 關聯表刪除實驗

2021-09-22 06:36:30 字數 3369 閱讀 5608

本實驗所用****於官網文件

from

sqlalchemy import

table, column, integer, string, foreignkey

from

sqlalchemy.orm import

relationship, backref

from

sqlalchemy.ext.declarative import

declarative_base

base = declarative_base()

'''關聯表刪除實驗'''

class

user

(base):

__tablename__ =

'users'

id= column(integer, primary_key=

true

) name = column(string)

password = column(string)

addresses = relationship("address"

, back_populates=

'user'

, cascade=

"all, delete, delete-orphan"

) def

__repr__

(self

):return

"%s', fullname='

%s', password='

%s')>"

% ( self.name, self.fullname, self.password)

class

address

(base):

__tablename__ =

'addresses'

id= column(integer, primary_key=

true

) email_address = column(string, nullable=

false

) user_id = column(integer, foreignkey('users.id'

))

user = relationship("user"

, back_populates=

"addresses"

) def

__repr__

(self

):return

"%s')>"

%self.email_address

from

sqlalchemy import

create_engine

from

sqlalchemy.orm import

sessionmaker

db_connect_string =

'sqlite://'

# 'sqlite:///:memory:'

engine = create_engine(db_connect_string, echo=

false

)db_session = sessionmaker(bind=engine)

session = db_session()

# 1. 建立表

base.metadata.create_all(engine)

# 2. 插入資料

some_users = [user(id

=1, name=

'張三'

, password=

'111111'

), user(id

=2, name=

'李四'

, password=

'222222'

), user(id

=3, name=

'王五'

, password=

'333333'

), user(id

=4, name=

'趙六'

, password=

'444444'

)]session.add_all(some_users)

some_addresses = [address(id

=1, email_address=

'[email protected]'

, user_id=

1), address(id

=2, email_address=

'[email protected]'

, user_id=

1), address(id

=3, email_address=

'[email protected]'

, user_id=

2), address(id

=4, email_address=

'[email protected]'

, user_id=

3), address(id

=5, email_address=

'[email protected]'

, user_id=

4)]session.add_all(some_addresses)

session.commit()

#關聯表刪除實驗

zhangsan = session.query(user).get(1)

# 刪除!!

del zhangsan.addresses[1]

res = session.query(address).filter(address.email_address.in_(['[email protected]'

, '[email protected]'

])).count()

print(res) # 結果為 1

# 刪除!!

session.delete(zhangsan)

res = session.query(user).filter_by(name=

'張三'

).count()

print(res) # 結果為 0

res = session.query(address).filter(address.email_address.in_(['[email protected]'

, '[email protected]'

])).count()

print(res) # 結果為 0

SQLAlchemy 關聯表刪除實驗

本實驗所用 於官網文件 from sqlalchemy import table,column,integer,string,foreignkey from sqlalchemy.orm import relationship,backref from sqlalchemy.ext.declarat...

SQLAlchemy 使用 二 表關聯

在上一章中我們介紹了 sqlalchemy 建立基本表,但是一般情況下,表之間是有關聯的,比如 一對一 一對多 多對多,當然 sqlalchemy 是支援建立model時指定關係的 我們建立兩個表,vip和vip info,邏輯應該是一對一,我們先測試一對多 class vip base vip使用...

sqlalchemy的關聯子查詢

sqlalchemy也算是用過好幾年了,不過一直都用著其中相對簡單的一小部分,最近寫個程式碰到個問題,需要作乙個關聯子查詢,類似這樣的sql語句 select master.select count from detail where detail.parentid master.id and de...