Я создаю определения таблиц с помощью SqlAlchemy в Python. Я могу успешно создать таблицу с первичным ключом, который автоматически увеличивается, и некоторые другие поля. Однако мне не удалось найти документацию о том, как добавить поле с отметкой времени, которое будет заполняться при добавлении новой записи. Для справки: вот как можно создать это поле непосредственно на листе Snowflake.
CREATE OR REPLACE TABLE My_Table(
TABLE_ID NUMBER NOT NULL PRIMARY KEY,
... Other fields
TIME_ADDED TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Это мой код Python...
from sqlalchemy import Column, DateTime, Integer, Text, String
from sqlalchemy.orm import declarative_base
from sqlalchemy import create_engine
Base = declarative_base()
class My_Table(Base):
__tablename__ = 'my_table'
TABLE_ID = Column(Integer, primary_key=True, autoincrement=True)
.. other columns
.. Also need to create TIME_ADDED field
engine = create_engine(
'snowflake://{user}:{password}@{account_identifier}/{database}/{schema}?warehouse = {warehouse}'.format(
account_identifier=account,
user=username,
password=password,
database=database,
warehouse=warehouse,
schema=schema
)
)
Base.metadata.create_all(engine)
Кто-нибудь делал это, и если да, могли бы вы указать мне правильное направление?






Добавить метку времени создания с помощью SQLAlchemy довольно просто.
from sqlalchemy import Column, TIMESTAMP, Integer, text
from sqlalchemy.orm import declarative_base
Base = declarative_base()
class My_Table(Base): # I'd suggest calling this MyTable within python.
__tablename__ = 'my_table'
TABLE_ID = Column(Integer, primary_key=True, autoincrement=True)
# ... other columns
TIME_ADDED = Column(TIMESTAMP, server_default=text('current_timestamp()')) # See Note!
Более подробно этот подход обсуждается здесь и в документации SQLAlchemy.
Примечание:
В качестве предостережения: на моем компьютере не установлена снежинка, но я понимаю, что она должна обрабатываться аналогично MySQL/MariaDB, для которой работает описанный выше метод. Я мог бы предположить, что для снежинки внутри требуется другая команда current_timestamp(), и в этом случае вам следует заменить ее действительной командой временной метки, специфичной для снежинки.
Спасибо. Это сработало. Теперь у меня есть еще один вопрос. Я создал его здесь для ясности, а не для обновления исходного вопроса. stackoverflow.com/questions/78640245/…