本實驗所用****於官網文件
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=
, user_id=
1), address(id
=2, email_address=
, user_id=
1), address(id
=3, email_address=
, user_id=
2), address(id
=4, email_address=
, user_id=
3), address(id
=5, email_address=
, 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]'
])).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]'
])).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...