Теперь это не огромный файл базы данных, его размер составляет всего 1 ГБ, и он не должен слишком сильно увеличиваться в размере.
Сейчас мы создаем файл базы данных при создании службы
Код: Выделить всё
#database.py
from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base, sessionmaker
from sqlalchemy_utils import create_database, database_exists
Base = declarative_base()
DB_SEMAPHORE = threading.Semaphore(1)
def get_engine():
engine = create_engine("sqlite://cache.db", connect_args={"check_same_thread"=False})
if not database_exists(engine.url):
create_database(engile.url)
return engine
def get_session():
engine = get_engine()
return sessionmaker(bind=engine, autocommit=False, autoflush=False)
def create_tables():
engine = get_engine()
Base.metadata.create_all(bind=engine)
Код: Выделить всё
from database import Base, get_session
Session = get_session()
class User(Base):
name: Mapped[str]
@classmethod
def example(cls):
with Session() as session:
session.query()
Я следовал этому примеру: Документация SQLAlchemy
Использование StaticPool, но теперь сеанс выдает ошибку, и без этого он делает это при каждом новом соединении, создавая новую БД.
Но есть ли способ простой работы, как обычный файл БД, но в памяти? Чтобы вести себя так же, как и раньше, не требуя слишком больших изменений?
Я также попробовал установить URL-адрес базы данных на
Код: Выделить всё
file:memdb1?mode=memory&cache=shared
Подробнее здесь: https://stackoverflow.com/questions/798 ... ormal-file
Мобильная версия