Доброе время суток!
Столкнулся с такой ситуацией: тестовый проект на Flask, понадобилось сохранить настройки отдельных "модулей" в базе данных, до этого хранились в .txt
и так есть в базе таблица Setting и её модель
class Setting(db.Model):
id = db.Column(db.Integer, primary_key = True)
group = db.Column(db.String(32), nullable=False, default = 'NONE', index = True)
key = db.Column(db.String(32), nullable=False, default = 'NONE', index = True)
value = db.Column(db.Text)
алгоритм такой пытаюсь реализовать:
- функция принимает данные из request.form, проверяет их наличие в базе данных ( по group);
- при отсутствии создает поля с данными (group='setting', key='domain', value=request.form['domain'])
- при наличии обновляет значениями (value) из request.form в базе данных
- и возвращает новые (value) обратно на рейдинг в шаблон!
гугление ничего не дало! , чтение оф.док sqlalchemy тоже!!
наверно не туда "рою...."
#......
if request.method == 'POST':
data = db.session.query(Setting).filter_by(group='setting').first()
if not data:
db.session.add_all([Setting(group='setting', key='domain', value=request.form['domain']),
Setting(group='setting', key='name', value=request.form['name']),
Setting(group='setting', key='title', value=request.form['title']),
Setting(group='setting', key='mdescription', value=request.form['mdescription']),
Setting(group='setting', key='mkeywords', value=request.form['mkeywords']),
db.session.commit()
# .....--- здесь наверно должен быть некий код для обновление строк в базе, ток как написать незнаю чтоб обновить сразу 4 строки в базе :(
db.session.commit()
test = db.session.query(Setting).filter_by(group='setting').all()
return render_template('setting.html', test=test)
И просто напросто:
Как удалять строки, к примеру нужно удалить все строки где group='setting'????
##### Уточнение#######
с удалением понял! большое спасибо!
1) Правильно ли проверяю существование записей, может есть более специфичный вариант (без выгрузки самих данных, нужно же получить только True или False, а не сами данные)
data = db.session.query(Setting).filter_by(group='setting').first()
if not data:
2) и все таки как обновлять данные в базе данных причем в разных строках? В тестовом примере выше эта часть вообще упущена! .... или с начало нужно отыскать эти записи в базе и уж потом по id уже обновлять каждую отдельно?