article

Tuesday, April 27, 2021

Python Flask PostgreSQL simple registration

Python Flask PostgreSQL simple registration

install psycopg2 https://pypi.org/project/psycopg2/
Psycopg is the most popular PostgreSQL database adapter for the Python programming language.
(venv) PS C:\flaskmyproject> pip install psycopg2

Crate database table
CREATE TABLE students (
id serial PRIMARY KEY,
fname VARCHAR ( 40 ) NOT NULL,
lname VARCHAR ( 40 ) NOT NULL,
email VARCHAR ( 40 ) NOT NULL
);

SELECT * FROM students
app.py
 
#app.py
from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
                                                            #password:admin
app.config['SQLALCHEMY_DATABASE_URI']='postgresql://postgres:admin@localhost/sampledb'

db=SQLAlchemy(app)

class Student(db.Model):
  __tablename__='students'
  id=db.Column(db.Integer,primary_key=True)
  fname=db.Column(db.String(40))
  lname=db.Column(db.String(40))
  email=db.Column(db.String(40))

  def __init__(self,fname,lname,email):
    self.fname=fname
    self.lname=lname
    self.email=email

@app.route('/')
def index():
  return render_template('index.html')

@app.route('/submit', methods=['POST'])
def submit():
  fname= request.form['fname']
  lname=request.form['lname']
  email=request.form['email']

  student=Student(fname,lname,email)
  db.session.add(student)
  db.session.commit()

  #fetch a certain student
  studentResult=db.session.query(Student).filter(Student.id==1)
  for result in studentResult:
    print(result.fname)

  return render_template('success.html', data=fname)

if __name__ == "__main__":
    app.run(debug=True)
templates/index.html
//templates/index.html
<!doctype html>
<html>
<head>
<title>Python Flask PostgreSQL simple registration</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />	
</head>
<body >
<div class="container" >
    <div class="row" style="padding:50px;">
		<p><h1>Python Flask PostgreSQL simple registration</h1></p>
        <form action="/submit" method="POST">
            <div class="mb-3">
              <label class="form-label">First name:</label>
              <input type="text" id="fname" name="fname" class="form-control">
            </div>
            <div class="mb-3">
                <label class="form-label">Last name:</label>
                <input type="text" id="lname" name="lname" class="form-control">
            </div>
            <div class="mb-3">
                <label class="form-label">Email:</label>
                <input type="text" id="email" name="email" class="form-control">
            </div>
            <br/><br/>
            <button type="submit" class="btn btn-primary">Submit</button>
          </form>
   </div>
</div>
</body>
</html>
templates/success.html
//templates/success.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    Your data has been added successfully. Hello {{data}}!
</body>
</html>

Related Post