Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python和peewee的默认值相同_Python_Python 3.x_Peewee - Fatal编程技术网

python和peewee的默认值相同

python和peewee的默认值相同,python,python-3.x,peewee,Python,Python 3.x,Peewee,我要用PeeWee做一个测试,我发现一个大问题。 例如: from uuid import uuid4 import datetime as dt import time from peewee import * dbfile = 'test.db' db = SqliteDatabase(dbfile) class BaseModel(Model): class Meta: database = db class Example(BaseModel): u

我要用PeeWee做一个测试,我发现一个大问题。 例如:

from uuid import uuid4
import datetime as dt
import time
from peewee import *

dbfile = 'test.db'
db = SqliteDatabase(dbfile)

class BaseModel(Model):
    class Meta:
        database = db

class Example(BaseModel):
    uuid = CharField(default=str(uuid4()))
    date = DateTimeField(default=dt.datetime.now())

try:
    Example.create_table()
except:
    pass
e1 = Example.create()
time.sleep(1)
e2 = Example.create()
print(e1.uuid, e2.uuid) #Same uuid...
print(e1.date, e2.date) #Same date
在这段代码中,uuid和date是相同的,这是不正常的。 为什么以及如何改变这一点是不同的价值为每一个新的创造


谢谢

问题在于如何定义uuid和日期字段的默认值。在示例类定义时,在uuid默认声明中,您正在执行uuid4函数并将该值指定为默认值。dt.datetime.now也是如此;您还将执行它并将返回的时间指定为默认值

以下更改修复了该问题:

class Example(BaseModel):
    uuid = CharField(default=uuid4)
    date = DateTimeField(default=dt.datetime.now)

问题在于如何定义uuid和日期字段的默认值。在示例类定义时,在uuid默认声明中,您正在执行uuid4函数并将该值指定为默认值。dt.datetime.now也是如此;您还将执行它并将返回的时间指定为默认值

以下更改修复了该问题:

class Example(BaseModel):
    uuid = CharField(default=uuid4)
    date = DateTimeField(default=dt.datetime.now)