- SQLAlchemy 教程
- SQLAlchemy - 首頁
- SQLAlchemy - 簡介
- SQLAlchemy 核心
- 表示式語言
- 連線資料庫
- 建立表
- SQL表示式
- 執行表示式
- 選擇行
- 使用文字SQL
- 使用別名
- 使用UPDATE表示式
- 使用DELETE表示式
- 使用多個表
- 使用多表更新
- 引數有序更新
- 多表刪除
- 使用連線
- 使用連線詞
- 使用函式
- 使用集合操作
- SQLAlchemy ORM
- 宣告對映
- 建立會話
- 新增物件
- 使用Query
- 更新物件
- 應用過濾器
- 過濾器運算子
- 返回列表和標量值
- 文字SQL
- 構建關係
- 處理相關物件
- 使用連線
- 常見的關聯運算子
- 提前載入
- 刪除相關物件
- 多對多關係
- 方言
- SQLAlchemy有用資源
- SQLAlchemy - 快速指南
- SQLAlchemy - 有用資源
- SQLAlchemy - 討論
SQLAlchemy核心 - 執行表示式
在上一章中,我們學習了SQL表示式。本章我們將深入探討這些表示式的執行。
為了執行生成的SQL表示式,我們必須**獲得一個連線物件,該物件代表一個已積極檢出的DBAPI連線資源**,然後**提供表示式物件**,如下面的程式碼所示。
conn = engine.connect()
下面的insert()物件可用於execute()方法:
ins = students.insert().values(name = 'Ravi', lastname = 'Kapoor') result = conn.execute(ins)
控制檯顯示SQL表示式執行結果如下:
INSERT INTO students (name, lastname) VALUES (?, ?)
('Ravi', 'Kapoor')
COMMIT
以下是使用SQLAlchemy核心技術執行INSERT查詢的完整程式碼片段:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///college.db', echo = True)
meta = MetaData()
students = Table(
'students', meta,
Column('id', Integer, primary_key = True),
Column('name', String),
Column('lastname', String),
)
ins = students.insert()
ins = students.insert().values(name = 'Ravi', lastname = 'Kapoor')
conn = engine.connect()
result = conn.execute(ins)
可以透過使用SQLite Studio開啟資料庫來驗證結果,如下面的螢幕截圖所示:
結果變數被稱為ResultProxy **物件**。它類似於DBAPI遊標物件。我們可以使用**ResultProxy.inserted_primary_key**獲取有關從我們的語句生成的pkey值的資訊,如下所示:
result.inserted_primary_key [1]
要使用DBAPI的execute many()方法發出多個插入,我們可以傳送一個字典列表,每個字典包含一組要插入的不同引數。
conn.execute(students.insert(), [
{'name':'Rajiv', 'lastname' : 'Khanna'},
{'name':'Komal','lastname' : 'Bhandari'},
{'name':'Abdul','lastname' : 'Sattar'},
{'name':'Priya','lastname' : 'Rajhans'},
])
這反映在表的資料檢視中,如下圖所示:
廣告