Create
建立(Create):
建立新資料紀錄。 這個操作通常是將新資料插入資料庫中的一個表格。 SQL 中的 INSERT 語句即為這類操作的典型例子。 範例:INSERT INTO users (name, email) VALUES (‘John Doe’, ‘john@example.com’);
定義 Model
我們來定義一個 class NBA_Player, 裡面有名字、和背號欄位。
1
2
3
4
5
6
7
8
9
10
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}')>"
基礎語法如下
插入單筆資料 session.add(new_player)
插入多筆資料 session.add_all(players)
記得! 一定要提交會話,才能使新增操作生效 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
55
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()
# C: Create 單一資料
new_player = NBA_Player(name='KB', number=24)
session.add(new_player)
# 提交會話以使新增操作生效
session.commit()
# C: Create 多筆資料
players = [
NBA_Player(name='MJ', number=23),
NBA_Player(name='TMac', number=1),
NBA_Player(name='AI', number=3)
]
session.add_all(players)
session.commit()
# 查詢所有用戶
players = session.query(NBA_Player).all()
for p in players:
print("player : ",p)

