Update
更新單個記錄
幫 LBJ 換個背號吧!
1
2
3
4
user = session.query(NBA_Player).filter_by(name='LBJ').first()
if user:
user.number = 6 # 更新 number
session.commit() # 提交更新
批量更新記錄
把大家的背號,都換成 Kobe 的背號吧(We miss you, Kobe.)
1
2
session.query(NBA_Player).filter(NBA_Player.number < 24).update({NBA_Player.number: 24})
session.commit() # 提交更新
完整 code 如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker
engine = create_engine('postgresql://myuser:mypassword@172.17.0.3:5432/mydatabase', echo=True)
Base = declarative_base()
# 定義 Model
class NBA_Player(Base):
__tablename__ = 'nba_player'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String)
number = Column(Integer)
def __repr__(self):
return f"<NBA_Player(name='{self.name}', number='{self.number}', id='{self.id}')>"
Base.metadata.create_all(engine)
# 創建會話類
Session = sessionmaker(bind=engine)
# 創建會話對象
session = Session()
# 查詢所有用戶
players = session.query(NBA_Player).all()
for p in players:
print("player : ",p)
# 更新單個記錄
user = session.query(NBA_Player).filter_by(name='LBJ').first()
if user:
user.number = 6 # 更新 number
session.commit() # 提交更新
players = session.query(NBA_Player).all()
for p in players:
print("player : ",p)
# 批量更新記錄
# 將所有背號小於 24 的 player 的背號設置為 24
session.query(NBA_Player).filter(NBA_Player.number < 24).update({NBA_Player.number: 24})
session.commit() # 提交更新
players = session.query(NBA_Player).all()
for p in players:
print("player : ",p)