SQLAlchemy – таблицы не создаются классом базы данныхPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 SQLAlchemy – таблицы не создаются классом базы данных

Сообщение Anonymous »

Я пытаюсь автоматически создавать таблицы с помощью SQLAlchemy для базы данных Postgresql.
В моем модуле я определил base.py:
< pre class="lang-py Prettyprint-override">

Код: Выделить всё

from sqlalchemy import MetaData
from sqlalchemy.orm import DeclarativeBase, Session

class Base(DeclarativeBase):
# Ensure all models use the public schema by default
metadata = MetaData(schema='public')
__abstract__ = True

def __eq__(self, other):
return True

def to_dict(self) -> dict:
"""Converts the fields (columns) of a class to a dictionary without the '_sa_instance_state' key."""
return {field.name: getattr(self, field.name) for field in self.__table__.c}

@classmethod
def get_count(cls, session: Session) -> int:
"""Get the count of rows in the table."""
return session.query(cls).count()
Затем я определил таблицу в файле models.py

Код: Выделить всё

from sqlalchemy import Column, DateTime, Integer, Float, ForeignKey
from sqlalchemy.orm import relationship
from .base import Base

class SensorData(Base):
__tablename__ = 'sensor_data'
trip_id = Column(Integer, primary_key=True)
timestamp = Column(DateTime, primary_key=True)
acceleration_x = Column(Float)
# Other fields...

и объект базы данных в моей базе данных.py:

Код: Выделить всё

from sqlalchemy import create_engine, MetaData
from .models import SensorData  # Models imported after Base
from .base import Base

class Database:
def __init__(self):
from sqlalchemy.engine.url import URL
url_object = URL.create(
drivername="postgresql+psycopg2",
username="username",
password="password",
host="localhost",
port=5432,
database="database"
)

self.engine = create_engine(url_object, echo=True)
self.metadata = MetaData(schema='public')

# Explicitly bind metadata and engine to the Base class
Base.metadata = self.metadata
Base.metadata.bind = self.engine
Base.metadata.create_all(self.engine)  # Table creation
В других частях моего кода я хотел бы создать объект базы данных и создать таблицы, если они еще не существуют (в общедоступной схеме)

Код: Выделить всё

    db = Database()
Весь код выполняется без ошибок, однако таблицы не создаются. Пользователь базы данных также должен иметь достаточные привилегии. Судя по тому, что я прочитал, порядок импорта классов важен, но я не уверен, как гарантировать, что все импортируется правильно с моей текущей настройкой кода?


Подробнее здесь: https://stackoverflow.com/questions/792 ... base-class
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • SQLAlchemy – таблицы не создаются классом базы данных
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Таблицы Flask-SQLAlchemy определены в схеме, но не создаются [дубликат]
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Таблицы Flask-SQLAlchemy определены в схеме, но не создаются [дубликат]
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Временные таблицы создаются постоянно при экспорте данных таблицы через Glue.
    Anonymous » » в форуме MySql
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Временные таблицы создаются постоянно при экспорте данных таблицы через Glue
    Anonymous » » в форуме MySql
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»