【问题标题】:python: How can I test my database model using in-memory db?python:如何使用内存数据库测试我的数据库模型?
【发布时间】:2013-03-20 03:54:36
【问题描述】:

我正在Flask 开发一个项目,并使用SQLAlchemy 作为 ORM
我有一个User 模型作为

class User(UserMixin, db.Model):
    __tablename__ = 'users'
    # noinspection PyShadowingBuiltins
    uuid = Column('uuid', GUID(), default=uuid.uuid4, primary_key=True,
                  unique=True)
    email = Column('email', String, nullable=False, unique=True)
    _password = Column('password', String, nullable=False)
    created_on = Column('created_on', sa.types.DateTime(timezone=True),
                        default=datetime.utcnow())
    last_login = Column('last_login', sa.types.DateTime(timezone=True),
                        onupdate=datetime.utcnow())
  • 我使用Alembic 创建了一个迁移脚本。
  • 我选择的数据库是 PostgreSQL,但为了测试我的模型,我更喜欢使用 SQLite 来加快测试速度
  • PostgreSQL 中存在某些类型而不在SQLite 中时出现问题,在本例中为UUID
  • 当我在 sqlite:// 上运行迁移时,它给了我错误

AttributeError: 'module' 对象没有属性 'GUID'

问题
- 如何使用GUID 保留我的架构并使用 SQLite 运行内存测试?好像SQLite 没有类似的东西
- 当他们的数据库是PostgreSQL时,人们有哪些方法可以更快地运行测试(在内存中)

【问题讨论】:

标签: python postgresql sqlalchemy flask alembic


【解决方案1】:

如何使用 SQLite 更快地进行测试?

无论如何,如果您想将内容保存在内存中……那么,请将您的数据库保存在内存中。 实际上 PostgreSQL 将经常访问的数据移动到内存中,但无论如何,你可以安装一些 RAMFS/RAMHDD 解决方案并将你的数据库放在那里,这样会非常快

您可以在 google 上搜索“postgresql on ramdisk”的解决方案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 2020-10-04
    • 2018-08-26
    • 2018-07-18
    • 2012-08-22
    • 2020-09-02
    相关资源
    最近更新 更多