Sqlalchemy-core-using-functions
提供:Dev Guides
SQLAlchemyコア-関数の使用
この章では、SQLAlchemyで使用される重要な関数の一部について説明します。
標準SQLは、ほとんどの方言で実装されている多くの関数を推奨しています。 渡された引数に基づいて単一の値を返します。 一部のSQL関数は引数として列を取りますが、一部は汎用です。 * SQLAlchemy APIのfuncキーワードは、これらの関数を生成するために使用されます*。
SQLでは、now()は汎用関数です。 次のステートメントは、funcを使用してnow()関数をレンダリングします-
from sqlalchemy.sql import func
result = conn.execute(select([func.now()]))
print (result.fetchone())
上記のコードのサンプル結果は以下のようになります-
(datetime.datetime(2018, 6, 16, 6, 4, 40),)
一方、テーブルから選択された行の数を返すcount()関数は、以下のfuncの使用によってレンダリングされます-
from sqlalchemy.sql import func
result = conn.execute(select([func.count(students.c.id)]))
print (result.fetchone())
上記のコードから、studentsテーブルの行数のカウントがフェッチされます。
いくつかの組み込みSQL関数は、次のデータでEmployeeテーブルを使用して示されます-
ID | Name | Marks |
---|---|---|
1 | Kamal | 56 |
2 | Fernandez | 85 |
3 | Sunil | 62 |
4 | Bhaskar | 76 |
max()関数は、SQLAlchemyのfuncを使用することで実装されます。これにより、85個の合計最大マークが取得されます-
from sqlalchemy.sql import func
result = conn.execute(select([func.max(employee.c.marks)]))
print (result.fetchone())
同様に、56、最小マークを返すmin()関数は、次のコードによってレンダリングされます-
from sqlalchemy.sql import func
result = conn.execute(select([func.min(employee.c.marks)]))
print (result.fetchone())
したがって、AVG()関数は、以下のコードを使用して実装することもできます-
from sqlalchemy.sql import func
result = conn.execute(select([func.avg(employee.c.marks)]))
print (result.fetchone())
Functions are normally used in the columns clause of a select statement.
They can also be given label as well as a type. A label to function allows the result
to be targeted in a result row based on a string name, and a type is required when
you need result-set processing to occur.from sqlalchemy.sql import func
result = conn.execute(select([func.max(students.c.lastname).label('Name')]))
print (result.fetchone())