SQLAlchemy核心 - 選擇行



在本章中,我們將討論在表格物件中選擇行的概念。

表格物件的select()方法使我們能夠構建SELECT表示式

s = students.select()

select物件透過str(s)函式轉換為SELECT查詢,如下所示:

'SELECT students.id, students.name, students.lastname FROM students'

我們可以使用此select物件作為連線物件的execute()方法的引數,如下面的程式碼所示:

result = conn.execute(s)

當執行上述語句時,Python shell會回顯以下等效的SQL表示式:

SELECT students.id, students.name, students.lastname
FROM students

結果變數等同於DBAPI中的遊標。我們現在可以使用fetchone()方法獲取記錄。

row = result.fetchone()

表格中所有選定的行都可以透過for迴圈列印,如下所示:

for row in result:
   print (row)

列印students表格中所有行的完整程式碼如下所示:

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), 
)

s = students.select()
conn = engine.connect()
result = conn.execute(s)

for row in result:
   print (row)

Python shell中顯示的輸出如下:

(1, 'Ravi', 'Kapoor')
(2, 'Rajiv', 'Khanna')
(3, 'Komal', 'Bhandari')
(4, 'Abdul', 'Sattar')
(5, 'Priya', 'Rajhans')

SELECT查詢的WHERE子句可以透過使用Select.where()來應用。例如,如果我們想顯示id>2的行

s = students.select().where(students.c.id>2)
result = conn.execute(s)

for row in result:
   print (row)

這裡c屬性是列的別名。shell上將顯示以下輸出:

(3, 'Komal', 'Bhandari')
(4, 'Abdul', 'Sattar')
(5, 'Priya', 'Rajhans')

在這裡,我們需要注意的是,select物件也可以透過sqlalchemy.sql模組中的select()函式獲得。select()函式需要表格物件作為引數。

from sqlalchemy.sql import select
s = select([users])
result = conn.execute(s)
廣告

© . All rights reserved.