Snowflake SQLAlchemy – создать таблицу с меткой времени?

Я создаю определения таблиц с помощью 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)

Кто-нибудь делал это, и если да, могли бы вы указать мне правильное направление?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добавить метку времени создания с помощью 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/…

MountainBiker 19.06.2024 18:19

Другие вопросы по теме