У меня есть модель, которую я создал на лету для peewee.Примерно так:
class TestTable(PeeweeBaseModel):
whencreated_dt = DateTimeField(null=True)
whenchanged = CharField(max_length=50, null=True)
Я загружаю данные из текстового файла в таблицу, используя peewee, столбец «когда изменено» содержит все даты в формате «% Y-% m-% d% H:% M:% S 'как столбец varchar.Теперь я хочу преобразовать текстовое поле «когда поменяно» в формат даты и времени в «когда».Я пробовал несколько вещей ... Я закончил с этим:
# Initialize table to TestTable
to_execute = "table.update({table.%s : datetime.strptime(table.%s, '%%Y-%%m-%%d %%H:%%M:%%S')}).execute()" % ('whencreated_dt', 'whencreated')
, который завершается с «TypeError: strptime () аргумент 1 должен быть str, а не CharField": я пытаюсь преобразовать "когда создан"to datetime, а затем присвойте его" whencreated_dt ".
Я попробовал вариант ... следующие, например, работают без помех:
# Initialize table to TestTable
to_execute = "table.update({table.%s : datetime.now()}).execute()" % (self.name)
exec(to_execute)
Но это, конечно, только текущее время даты, а не другое поле.
Кто-нибудь знает решение этой проблемы?
Правка ... В конце концов я нашел обходной путь ... но я все еще ищу лучшее решение ...Обходной путь:
all_objects = table.select()
for o in all_objects:
datetime_str = getattr( o, 'whencreated' )
setattr(o, 'whencreated_dt', datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S'))
o.save()
Цикл по всем строкам таблицы, получить «когда создано».Преобразуйте «whencreated» в datetime, поместите его в «whencreated_dt» и сохраните каждую строку.
С уважением, Свен