正在验证SQLAlchemy字段

2024-05-21 05:08:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我从一个程序化的程序中创建了一个字典

{'field1: 3, 'field2: 'TEST'}

我将这个字典作为它的字段输入到模型中(例如:Model(**dict)

确定要运行的单元测试的数据系列是否有效。在

如何验证这些数据类型对我的数据库是有效的,而不必执行插入和回滚操作,因为这会在测试中引入薄片,就像我与实际的数据库交互一样正确吗?(MySQL)。在


Tags: 数据模型test程序数据库model字典mysql
2条回答

这里有一个简单的方法来完成你所要求的

class Sample_Table(Base):
    __tablename__ = 'Sample_Table'
    __table_args__ = {'sqlite_autoincrement': True}
    id = Column(Integer, primary_key=True, nullable=False)
    col1 = Column(Integer)
    col2 = Column(Integer)

    def __init__(self, **kwargs):
        for k,v in kwargs.items():
            col_type = str(self.__table__.c[k].type)
            try:            
                if str(type(v).__name__) in col_type.lower():
                    setattr(self, k, v)
                else:
                    raise Exception("BAD COLUMN TYPE FOR COL " + k)
            except ValueError as e:
                print e.message

如果您试图使用上面的方法插入列类型与您指定的不同的记录,它将抛出一个错误,即它不会执行插入和回滚。在

要证明这是有效的,请尝试以下完整的工作代码:

^{pr2}$

(即使我使用了SQLite,它也同样适用于MySQL数据库。)

我在sqlalchemy方面没有太多的经验,但是如果您在模型的列中使用数据类型,这行得通吗?在

{a1}你可能会帮上忙

相关问题 更多 >