python - How to fetch column values using SQLAlchemy? -
i using flask+python , check if username (and email) taken or not using logic:
@app.route('/register', methods=['get', 'post']) def register(): form = signupform() if form.validate_on_submit(): user = users.query.filter_by(username=form.username.data).first() email = users.query.filter_by(email=form.email.data).first() if form.username.data in user: error = 'username taken. choose another' elif form.email.data in email: error = 'email registered. login or register email' else: user = users( form.username.data, form.password.data, #form.confirm.data , form.email.data, 1, # form.cityaddress.data, # form.countryaddress.data, #form.accept_tos.data, ) db.session.add(user) db.session.commit() return redirect(url_for('index')) but giving error object has no attribute 'username'
i know logic fetching data db not correct. have little knowledge of sqlalchemy.
could suggest me how can fetch username (and email) column value table users , check them if there same form.username.data ?
your queries fine, return value first() instance of user object, or none if there no results:
u = users.query.filter_by(username=form.username.data).first() if u not none: print u.username print u.email so given that, here's logic like:
user_by_name = users.query.filter_by(username=form.username.data).first() user_by_email = users.query.filter_by(email=form.email.data).first() if user_by_name: error = 'username taken. choose another' elif user_by_email: error = 'email registered. login or register email' else: #unique user , email you in 1 query:
existing = users.query.filter((users.username == form.username.data) | (users.email == form.email.data)).all() if existing: error = 'user or email taken' note use of filter rather filter_by - cant use bitwise operators in filter_by. here's quick working example
Comments
Post a Comment