Hey guys, I’m currently working on a web app using Python, Postgres and SQLAlchemy(Psycopg2).
I’ve set up a form that stores information input by the user into the database, sends them an email letting them know said message was receives successfully and notifies me also.
The problem I’m running into is with duplicate values, I’ve been able to stop the server from breaking up in debug when a duplicate value is inserted into the database and instead relay a message on the screen that the information the user is entering has already been logged by the system. However I’ve added more values to the form – first name, last name etc…
The error is being thrown again. I’m thinking of storing the (input)values from the form in an array, asking the server to check that array for duplicates in the database before there’s any injection attempt made on the servers behalf.
In short the everything works great, as long as there isn’t duplicate information being inserted. Would you guys say this is a good way to handle it? If not what’s the best way to go about it? Here’s the code with the if statement that was working prior.
from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
from send_email import send_email
app = Flask(__name__)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = '|||||||||||||||||||||||||||||||||||'
db = SQLAlchemy(app)
class Data(db.Model):
__tablename__ = 'data'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(50), unique=True)
first_name = db.Column(db.String(50), unique=False)
last_name = db.Column(db.String(50), unique=False)
phone_number = db.Column(db.String(50), unique=True)
def __init__(self, email, first_name, last_name, phone_number):
self.email = email
self.first_name = first_name
self.last_name = last_name
self.phone_number = phone_number
Right here
@app.route(’/’)
def index():
return render_template(‘index.html’)
@app.route('/success', methods=['POST'])
def success():
if request.method=='POST':
email=request.form["email_name"]
first_name=request.form["first_name"]
last_name = request.form["last_name"]
phone_number = request.form["phone_number"]
send_email(email, first_name, last_name, phone_number)
if db.session.query(Data).filter(Data.email, first_name == email).count() == 0:
data = Data(email, first_name, last_name, phone_number)
db.session.add(data)
db.session.commit()
return render_template('success.html')
return render_template('index.html',
text ="This information already exist." )
if __name__ == "__main__":
app.debug=True
app.run()