我使用的是mysql数据库。 Peewee未在id
save()
字段
Peewee模特:
class OAuthAccount(BaseModel):
id = BigIntegerField(primary_key=True,index=True,unique=True , db_column="id")
oauth_provider_id = IntegerField(null=False)
oauth_uid = CharField()
oauth_token = CharField()
oauth_token_secret = CharField()
username = CharField()
inserter = BigIntegerField(null=True,db_column="inserter_id")
insert_date = DateTimeField(null=True,default=fn.NOW())
updater = BigIntegerField(null=True,db_column="updater_id")
update_date = DateTimeField(null=True)
extra_data = CharField()
保存代码:
oauthUser = OAuthAccount(
oauth_provider_id= formData.get("oauth_provider_id"),
oauth_uid = formData.get("oauth_uid"),
oauth_token = formData.get("oauth_token"),
oauth_token_secret=formData.get("oauth_token_secret"),
username = formData.get("username"),
inserter_id = g.auth.userId(),
extra_data = formData.get("extra_data")
)
oauthUser.save()
print "id => " + str(oauthUser.id)
输出为:id => None
该行已成功插入数据库。但id
仍为None
答案 0 :(得分:1)
我不明白但是当我做这个改变时它起作用了:
id = BigIntegerField(primary_key=True,index=True,unique=True , db_column="id")
->
id = BigIntegerField( db_column="id")
它也适用于这种变化:
id = BigIntegerField(primary_key=True,index=True,unique=True , db_column="id")
->
id = PrimaryKeyField( db_column="id")
当我放primary_key=True
时,它不起作用。
id = BigIntegerField(primary_key=True , db_column="id")
也许这是一个错误?
答案 1 :(得分:1)
这不是一个错误本身,但只有PrimaryKeyField
或具有已定义序列的字段被视为自动递增。
使用一些代码,您可以为BigInt主键字段添加自定义字段类型。
答案 2 :(得分:1)
而不是:
class OAuthAccount(BaseModel):
id = BigIntegerField(primary_key=True,index=True,unique=True , db_column="id")
尝试:
class OAuthAccount(BaseModel):
id = PrimaryKeyField()
然后id
和save
之后将在您的模型上设置create
字段。
如果你需要使用bigint,你需要继承PrimaryKeyField
。