Значения столбца по умолчанию, переданные как значения server_default
или default
, полезны для установки фиксированных значений по умолчанию или даты или временных меток, но не принимают аргументы времени выполнения для более сложной обработки, как в вашем примере. Правильным местом для размещения такого кода является конструктор класса вашей модели, который будет вызываться только при создании нового объекта, но не при извлечении объекта из базы данных. Единственные изменения, которые необходимы в вашем коде для выполнения этой работы, - это превратить функцию getinfo
в метод __init__
и вручную установить значения namefile
и info
.
class Item(db.Model):
def __init__(self, namefile):
path_file = os.path.abspath(os.path.dirname(__file__)) + "/docxfiles/" + namefile
doc = docx.Document(path_file)
fulltext = []
for i in doc.paragraphs:
fulltext.append(i.text)
body = '\n\n'.join(fulltext)
self.info = re.sub('<(.|\n)*?>','',body)
self.namefile = namefile
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
namefile = db.Column(db.String(200), unique=True)
info = db.Column(db.String(16777216))