【问题标题】:How to get insert return value using peewee?如何使用 peewee 获取插入返回值?
【发布时间】:2018-06-15 01:58:37
【问题描述】:

我在我的项目中使用 peewee,我的表有一个名为 id 的文件,它是自动增量和主键。
调用 API 插入函数时我需要获取 id 值。
我的模型是

class UserModel(pw_db.Model):
    id = IntegerField(primary_key=True)
    username = CharField()
    phone = CharField()
    status = IntegerField()

    class Meta:
        db_table = 't_test'

我的插入函数是

def create_user(body=None):
    query = models.UserModel.create(
        username=body['userName'],
        phone=body.get('phone', None),
        status=body.get('status', 1)
    )
    return query

create_user返回值无法获取id值,
好像id可以用sqlalchemy,我知道openstack用sqlalchemy,结果可以在create函数中获取auto_increment id。

【问题讨论】:

    标签: python peewee flask-peewee


    【解决方案1】:

    使用 IntegerField(primary_key=True) 与使用 PrimaryKeyField(或 3.0a 中的 AutoField)不同。前者只是一个充当pk的整数。后者用于自增。

    http://docs.peewee-orm.com/en/latest/peewee/models.html#manually-specifying-primary-keys

    【讨论】:

      【解决方案2】:

      解决它。
      移除Model中id(id = IntegerField(primary_key=True))的字段,
      会在查询中得到id值。

      【讨论】:

      • 或者你可以使用id = PrimaryKeyField()
      【解决方案3】:

      试过query.id


      Model.create() 创建了一个新模型实例。

      主键将被自动检索并存储在模型实例中。

      【讨论】:

      • query.id 为无。
      • 查询执行成功了吗?您的模型类名为UserModel,您正在调用LoanModel
      • 是的,执行成功。它在 db 中生成了一条新记录,但 query.id 为 None。
      • 我尝试使用 models.UserModel.insert( username=body['userName'], phone=body.get('phone', None), status=body.get('status', 1) ).execute() ,也是无
      • 是的,我使用了execute,新的记录已经在db中了,但是返回值为None。
      猜你喜欢
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多