|
|||||||
AutoIncrement / Создание автоикремента
Время создания: 17.04.2017 21:09
Раздел: Python - Модули - peewee
Запись: xintrea/mytetra_db_mcold/master/base/1492452541hwbu2lz4hw/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
### 5. Создание автоикремента / AutoIncrement class Poet(Model): id = IntegerField() c_author = CharField()
def next_id(): # find max value of temp_id in model # increment it by one and assign it to model instance object try: next_value = Poet.select(fn.Max(Poet.id))[0].id + 1 except: next_value = 1 return next_value if __name__ == "__main__": try: Poet.create_table() except: pass Poet.create(id=next_id(), c_author='Block') Poet.create(id=next_id(), c_author='Pushkin') Тоже самое с использованием eval eval позволяет сделать функцию next_id универсальной, т.е. для любой таблицы class Poet(Model): id = IntegerField() c_author = CharField()
def next_id(instance): # find max value of temp_id in model # increment it by one and assign it to model instance object try: e = instance.__name__ + '.select(fn.Max(' + instance.__name__ + '.id))[0].id + 1' # next_value = Poet.select(fn.Max(Poet.id))[0].id + 1 next_value = eval(e) except: next_value = 1 return next_value if __name__ == "__main__": try: Poet.create_table() except: pass Poet.create(id=next_id(Poet), c_author='Akhmadulina') Poet.create(id=next_id(Poet), c_author='Tutchev') |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|