Функция func.current_time
Функция func.current_time создает SQL-выражение,
которое возвращает текущее время на стороне сервера базы
данных. Функция не принимает обязательных параметров и
может быть использована в запросах <+sql+>SELECT<->sql->,
а также при вставке и обновлении данных. Значение
вычисляется СУБД в момент выполнения запроса, а не в
момент формирования выражения в Python.
Функция доступна через объект func, который
предоставляет доступ к одноименным SQL-функциям. В
зависимости от диалекта выражение может транслироваться
в <+sql+>CURRENT_TIME<->sql-> или <+sql+>CURRENT_TIME()<->sql->.
Синтаксис
func.current_time()
Пример
Давайте получим текущее время базы данных с помощью простого запроса:
from sqlalchemy import create_engine, select, func
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
res = conn.execute(select(func.current_time())).scalar()
print(res)
Результат выполнения кода:
"14:35:02"
Пример
Давайте присвоим столбцу выражения псевдоним с помощью
метода label и выведем результат:
from sqlalchemy import create_engine, select, func
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
stmt = select(func.current_time().label('now_time'))
res = conn.execute(stmt).one()
print(res.now_time)
Результат выполнения кода:
"14:35:02"
Пример
Давайте используем функцию при выборке из таблицы
articles. Сначала создадим таблицу и заполним ее
данными:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, insert, select, func
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('status', String),
)
metadata.create_all(engine)
with engine.connect() as conn:
conn.execute(insert(articles), [
{'title': 'article', 'status': 'draft'},
])
stmt = select(articles.c.title, func.current_time())
res = conn.execute(stmt).all()
print(res)
Результат выполнения кода:
[('article', '14:35:02')]
Итоговый SQL запрос:
SELECT articles.title, CURRENT_TIME
FROM articles
Пример
Давайте используем функцию при вставке новой строки в таблицу, чтобы сохранить время создания записи:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Time, insert, select, func
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('created_at', Time),
)
metadata.create_all(engine)
with engine.connect() as conn:
conn.execute(insert(articles).values(
title='article',
created_at=func.current_time(),
))
res = conn.execute(select(articles)).all()
print(res)
Результат выполнения кода:
[(1, 'article', '14:35:02')]
Итоговый SQL запрос:
INSERT INTO articles (title, created_at)
VALUES ('article', CURRENT_TIME)
Смотрите также
-
функцию
current_timestamp,
которая возвращает текущую дату и время -
функцию
current_date,
которая возвращает текущую дату -
функцию
now,
которая возвращает текущие дату и время -
объект
func,
который предоставляет доступ к SQL-функциям