For that, we need to install postgres.
after installing postgres along with pgadmin3 GUI.
sudo pip3 install Flask-SQLAlchemy==2.2 psycopg2==2.6.2
SQL Alchemy is the ORM tool: www.sqlalchemy.org
from flask import Flask, request, render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.update(
SECRET_KEY = 'topsecret',
SQLALCHEMY_DATABASE_URI = '<database>://<user_id>:<password>@<server>/<database_name>',
SQLALCHEMY_TRACK_MODIFICATIONS=False
)
db = SQLAlchemy(app)
For example,
3 tables (Publication,Books, Users)
Publication Table (pub_id - primary key) Books table (pub_id - foreign key)
with orm mapped class to database table, below is the complete code.
# INCREMENTAL PYTHON CODE FOR CREATING PUBLICATION TABLE
# SECTION 4: LECTURE: 20
# ENTER YOUR OWN VALUE IF NEEDED FOR THE SECRET_KEY VARIABLE
# ENTER YOU OWN PASSWORD FOR THE DATABASE_URI
from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.update(
SECRET_KEY='topsecret',
SQLALCHEMY_DATABASE_URI='postgresql://postgres:YOUR_PASSWORD@localhost/catalog_db',
SQLALCHEMY_TRACK_MODIFICATIONS=False
)
db = SQLAlchemy(app)
@app.route('/index')
@app.route('/')
def hello_flask():
return 'Hello Flask'
@app.route('/new/')
def query_string(greeting='hello'):
query_val = request.args.get('greeting', greeting)
return '<h1> the greeting is: {0} </h1>'.format(query_val)
@app.route('/user')
@app.route('/user/<name>')
def no_query_strings(name='mina'):
return '<h1> hello there ! {} </>'.format(name)
# strings
@app.route('/text/<string:name>')
def working_with_strings(name):
return '<h1> here is a string: ' + name + '</h1>'
# numbers
@app.route('/numbers/<int:num>')
def working_with_numbers(num):
return '<h1> the number you picked is: ' + str(num) + '</h1>'
# add numbers
@app.route('/add/<int:num1>/<int:num2>')
def adding_integers(num1, num2):
return '<h1> the sum is : {}'.format(num1 + num2) + '</h1>'
# floats
@app.route('/product/<float:num1>/<float:num2>')
def product_two_numbers(num1, num2):
return '<h1> the product is : {}'.format(num1 * num2) + '</h1>'
# rendering templates
@app.route('/temp')
def using_templates():
return render_template('hello.html')
# JINJA2 TEMPLATES-1
@app.route('/watch')
def top_movies():
movie_list = ['autopsy of jane doe',
'neon demon',
'ghost in a shell',
'kong: skull island',
'john wick 2',
'spiderman - homecoming']
return render_template('movies.html',
movies=movie_list,
name='Harry')
# JINJA2 TEMPLATES-2
@app.route('/tables')
def movies_plus():
movies_dict = {'autopsy of jane doe': 02.14,
'neon demon': 3.20,
'ghost in a shell': 1.50,
'kong: skull island': 3.50,
'john wick 2': 02.52,
'spiderman - homecoming': 1.48}
return render_template('table_data.html',
movies=movies_dict,
name='Sally')
# JINJA2 - FILTERS
@app.route('/filters')
def filter_data():
movies_dict = {'autopsy of jane doe': 02.14,
'neon demon': 3.20,
'ghost in a shell': 1.50,
'kong: skull island': 3.50,
'john wick 2': 02.52,
'spiderman - homecoming': 1.48}
return render_template('filter_data.html',
movies=movies_dict,
name=None,
film='a christmas carol')
# JINJA2 - MACROS
@app.route('/macros')
def jinja_macros():
movies_dict = {'autopsy of jane doe': 02.14,
'neon demon': 3.20,
'ghost in a shell': 1.50,
'kong: skull island': 3.50,
'john wick 2': 02.52,
'spiderman - homecoming': 1.48}
return render_template('using_macros.html', movies=movies_dict)
# PUBLICATION TABLE
class Publication(db.Model):
__tablename__ = 'publication'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False)
def __init__(self, id, name):
self.id = id
self.name = name
def __repr__(self):
return 'The id is {}, Name is is {}'.format(self.id, self.name)
if __name__ == '__main__':
db.create_all()
app.run(debug=True)
No comments:
Post a Comment