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開啟資料庫來驗證結果,如下面的螢幕截圖所示:

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'},
])

這反映在表的資料檢視中,如下圖所示:

 Table Data View
廣告
© . All rights reserved.