忘记迁移并使用SQLSUGAR
#python #sql #sqlalchemy #migrations

管理数据库可能是一项艰巨且耗时的琐事,对于从事小型项目或原型的开发人员而言。为了帮助这一点,我创建了一个名为SQLSugar的小型项目。

sqlsugar是一个库,它使使用真实数据库易于使用,而无需花费时间生成迁移。这可能非常有助于为想法或小型项目运行快速原型。您可以轻松地在数据库中添加新表,列和索引,而不必担心管理迁移。

这个怎么运作?

要使用SQLSUGAR,您只需使用SQLalchemy的模型来定义数据库架构,然后将该模式传递给SQLSUGAR的迁移函数。然后,SQLSUGAR将使用ALEMBIC自动化您定义的模式和实际数据库之间的差异,并执行必要的操作以使两者匹配。

例如,如果SQLSUGAR在数据库中缺少的代码中找到了一个新列,则将自动创建该列。这为您节省了手动创建和运行迁移的时间和精力,使您可以专注于构建项目。

用法

安装:

pip install sqlsugar

首先,用sqlalchemy定义模型:

import logging

from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import Session, declarative_base

from sqlsugar import migrate

logging.basicConfig(
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO
)

Base = declarative_base()

class Cat(Base):  # type: ignore
    __tablename__ = "cat"

    id = Column(Integer, primary_key=True)
    name = Column(String)

然后,您可以使用SQLSUGAR的迁移命令自动获取数据库。

from sqlsugar import migrate

# You only need this command to handle creating tables & running migrations
migrate(engine.connect(), Base.metadata)

限制

尽管我的项目是快速原型思想的绝佳解决方案,但确实有局限性。它不支持重命名列或删除列。随着项目的增长,您应该切换到使用Alembic等更成熟的解决方案。