SQLAlchemyCore-関数の使用

この章では、SQLAlchemyで使用される重要な関数のいくつかについて説明します。

標準SQLは、ほとんどの方言で実装される多くの関数を推奨しています。渡された引数に基づいて単一の値を返します。一部のSQL関数は列を引数として受け取りますが、一部は汎用です。Thefunc keyword in SQLAlchemy API is used to generate these functions

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 名前 マーク
1 カマル 56
2 フェルナンデス 85
3 スニール 62
4 バスカー 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())