如何创建一个表项的实例,但在ponyorm不加?(How to create instance of

2019-11-05 07:32发布

如何使用而不需要插入一行到相应的表中创建一个表定义的一个实例。

比如我所想的是:

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:

对于这样的一个例子是用例:

  • 我刮网站
  • 我拉在“行”数据
  • 如果地址尚未公布
    • 创建用户的实例
    • 不加它只是使用类作为数据的容器
  • 如果信息可用
    • 创建一个实例,并只有当记录不存在添加它

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

Answer 1:

PonyORM作为ORM不提供这种情况下任何东西。 您仍然可以使用常规的Python字典或类。

users = {} # id: info

所以,当你积累(或任何你做的)信息,你可以创建一个这样的对象。

@db_session
def insert_users():
    for k, v in users.items():
        User(id=k, **v)


文章来源: How to create instance of a table entry but not added in ponyorm?