У меня есть база данных sqlite, которая выглядит следующим образом:
id user_id name data
Я хочу сохранить данные в базу данных sqlite. я получу name
и data
от пользователя. Здесь я написал код для сохранения данных. но проблема в том, что если пользователь вводит те же данные, он сохраняет их. Я не хочу, чтобы те же данные были сохранены снова. Я использовал условие if else, но оно проверяет только первую строку. Как сделать так, чтобы он проверял несколько строк. Как сделать это возможным
Вот код:
from flask import Flask, request, jsonify, abort, url_for
from flask_httpauth import HTTPBasicAuth
from flask_sqlalchemy import SQLAlchemy
from passlib.apps import custom_app_context as pwd_context
import datetime
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/data_logs2.db'
db = SQLAlchemy(app)
auth = HTTPBasicAuth()
idd = 1
class PersonData(db.Model) :
__tablename__ = 'person_data'
id = db.Column(db.Integer, primary_key = True)
user_id = db.Column(
db.Integer,
nullable=False
)
name = db.Column(db.String(128))
data = db.Column(db.String(128))
@app.route('/savedata',methods=['POST'])
def save_data():
name = request.form['name']
datas = request.form['data']
print()
personData = PersonData.query.filter_by(user_id=idd).first()
if personData:
if personData.data != datas:
personData = PersonData(user_id = idd, name = name, data =datas)
db.session.add(personData)
db.session.commit()
elif personData.name != name:
personData = PersonData(user_id = idd, name = name, data =datas)
db.session.add(personData)
db.session.commit()
else:
personData.data = datas
db.session.commit()
else:
personData = PersonData(user_id = idd, name = name, data =datas)
db.session.add(personData)
db.session.commit()
return jsonify({'success':'true'})
if __name__ == '__main__':
db.create_all()
app.run(host='0.0.0.0', port=5001)
Данные хранятся в таблице:
id user_id name data
1 1 steve1 sample data1
2 1 steve2 sample data2
3 1 steve3 sample data3
4 1 steve3 sample data3
5 1 steve2 sample data2
6 1 steve5 sample data5
Требуемый вывод для хранения в таблице:
id user_id name data
1 1 steve1 sample data1
2 1 steve2 sample data2
3 1 steve3 sample data3
4 1 steve5 sample data5