К сожалению, вы не можете просто установить атрибут объекта Python с помощью переменной таким образом.Один из способов сделать это - использовать метод setattr
для этого, например, вот примерный пример:
from elixir import *
metadata.bind = 'sqlite://'
metadata.bind.echo = False
class Book(Entity):
PrintTitle = Field(String(50))
setup_all()
create_all()
params = {'PrintTitle':'Ethyl the Aardvark goes Quantity Surveying'}
bk = Book()
print "Title in database (before): {}".format(bk.PrintTitle)
for k, v in params.items():
setattr(bk, k, v)
print "Title in database (after): {}".format(bk.PrintTitle)
Результат этого сценария:
Title in database (before): None
Title in database (after): Ethyl the Aardvark goes Quantity Surveying
Здесь я подделываю вашу модель эликсира и просто использую словарь params
, чтобы подделать все, что вы получаете request.params
.
Так что в этом примере setattr(bk, k, v)
в значительной степеничто вы пытаетесь сделать с bk.k=v
.
РЕДАКТИРОВАТЬ: Я должен добавить, что вы должны быть осторожны, используя setattr, в том, что вы должны быть уверены, что ключ от ваших параметровсначала существует в вашей модели БД, поскольку elixer / sqlalchemy может не понравиться пытаться установить значение несуществующего поля базы данных.