如何创建表条目的实例但未添加到 ponyorm 中?

如何在不向相应的表中插入行的情况下使用创建表定义的实例。


例如我想要的是:


from pony import orm

from pony.orm import Required

db = orm.Database()

class User(db.Entity):

    name = Required(str)

    address = Optional(str)


db.bind(provider='sqlite', filename=':memory:')

db.generate_mapping(create_tables=True)


bob = User(name='bob')


### CODE FROM HERE ON IS WRONG BUT SHOWCASES WHAT I WANT

# So far the database has not been modified

bob.add() # at this point bob is added

db.commit() # transaction is committed

以上可能吗?我想要这个的原因是我想使用类定义而不向数据库添加项目。这只是确保各地的用户(在本例中)具有相同属性的一种非常简单的方法。


我最初使用pyDAL它,我发现它很容易设置表格,但在那里我必须定义表格,然后还要编写类,所以我搬到了那里,ponyorm但不清楚我是否可以实现我想要的。

更新1:

一个示例用例是:

  • 我正在抓取一个网站

  • 我拉入“行”数据

  • 如果地址尚不可用

    • 创建用户实例

    • 不添加它只是使用类作为数据的容器

  • 如果信息可用

    • 创建一个实例,只有当记录不存在时才添加它

基本上,我希望能够将 Class 用作信息的容器,而不必总是将其添加到数据库中。


三国纷争
浏览 147回答 1
1回答

Qyouu

PonyORM 作为 ORM 没有为这种情况提供任何东西。您仍然可以使用常规的 Python 字典或类。users = {} # id: info因此,当您积累(或无论您在做什么)信息时,您可以创建这样的对象。@db_sessiondef insert_users():    for k, v in users.items():        User(id=k, **v)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python