Create DB when executing 'flask run'

This commit is contained in:
coolneng 2020-01-08 21:31:00 +01:00
parent 712c84b358
commit f84d71616a
Signed by: coolneng
GPG Key ID: 9893DA236405AF57
9 changed files with 69 additions and 63 deletions

View File

@ -1,5 +1,10 @@
from flask import Flask from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__) app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
from app import routes
from app import routes, models

44
code/app/models.py Normal file
View File

@ -0,0 +1,44 @@
from app import db
from subprocess import run
from database.constants import DB_USER, DB_PW, DB_NAME
class Glacier(db.Model):
uid = db.Column(db.String(5), primary_key=True)
country = db.Column(db.String(60))
name = db.Column(db.String(60))
annual_data = db.relationship("Annual_Data")
def __init__(self, uid, country, name):
self.uid = uid
self.country = country
self.name = name
class Annual_Data(db.Model):
__tablename__ = "annual_data"
year = db.Column(db.Integer, primary_key=True)
uid = db.Column(db.ForeignKey("glacier.uid"), primary_key=True)
surface = db.Column(db.Float)
length = db.Column(db.Float)
elevation = db.Column(db.Float)
def __init__(self, year, surface, length, elevation):
self.year = year
self.surface = surface
self.length = length
self.elevation = elevation
class User(db.Model):
uid = db.Column(db.Integer, primary_key=True)
registration_date = db.Column(
db.DateTime, nullable=False, server_default=db.func.now()
)
username = db.Column(db.String(20), nullable=False, unique=True)
password = db.Column(db.String(60))
def __init__(self, uid, username, password):
self.uid = uid
self.username = username
self.password = password

6
code/config.py Normal file
View File

@ -0,0 +1,6 @@
from database.constants import CONNECTION_URI
class Config(object):
SQLALCHEMY_DATABASE_URI = CONNECTION_URI
SQLALCHEMY_TRACK_MODIFICATIONS = False

View File

View File

@ -2,3 +2,7 @@ DB_NAME = "igdb"
DB_USER = "igdb" DB_USER = "igdb"
DB_PW = "agentorange" DB_PW = "agentorange"
ADMIN_PW = "fuckmonsanto" ADMIN_PW = "fuckmonsanto"
HOST = "localhost:3306"
CONNECTION_URI = "mysql+pymysql://{user}:{pw}@{url}/{db}".format(
user=DB_USER, pw=DB_PW, url=HOST, db=DB_NAME
)

View File

@ -1,8 +1,6 @@
from app import db
from database.constants import DB_NAME, DB_USER, DB_PW
from subprocess import run from subprocess import run
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
from flask import Flask
from constants import DB_NAME, DB_USER, DB_PW
def create_database(): def create_database():
@ -13,62 +11,6 @@ def create_database():
exit() exit()
def create_connection():
host = "localhost:3306"
connection_uri = "mysql+pymysql://{user}:{pw}@{url}/{db}".format(
user=DB_USER, pw=DB_PW, url=host, db=DB_NAME
)
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = connection_uri
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)
return db
db = create_connection()
class Glacier(db.Model):
uid = db.Column(db.String(5), primary_key=True)
country = db.Column(db.String(60))
name = db.Column(db.String(60))
annual_data = db.relationship("Annual_Data")
def __init__(self, uid, country, name):
self.uid = uid
self.country = country
self.name = name
class Annual_Data(db.Model):
__tablename__ = "annual_data"
year = db.Column(db.Integer, primary_key=True)
uid = db.Column(db.ForeignKey("glacier.uid"), primary_key=True)
surface = db.Column(db.Float)
length = db.Column(db.Float)
elevation = db.Column(db.Float)
def __init__(self, year, surface, length, elevation):
self.year = year
self.surface = surface
self.length = length
self.elevation = elevation
class User(db.Model):
uid = db.Column(db.Integer, primary_key=True)
registration_date = db.Column(
db.DateTime, nullable=False, server_default=db.func.now()
)
username = db.Column(db.String(20), nullable=False, unique=True)
password = db.Column(db.String(60))
def __init__(self, uid, username, password):
self.uid = uid
self.username = username
self.password = password
def create_tables(): def create_tables():
db.create_all() db.create_all()

View File

@ -1,4 +1,4 @@
from constants import DB_NAME, DB_PW, DB_USER from database.constants import DB_NAME, DB_PW, DB_USER
from pandas import DataFrame, read_csv from pandas import DataFrame, read_csv
from sqlalchemy import create_engine, engine from sqlalchemy import create_engine, engine

View File

@ -1,7 +1,7 @@
from iso3166 import countries as co from iso3166 import countries as co
from pandas import DataFrame, concat, read_csv from pandas import DataFrame, concat, read_csv
from csv import QUOTE_NONNUMERIC from csv import QUOTE_NONNUMERIC
from constants import ADMIN_PW from database.constants import ADMIN_PW
def country_conversion(political_unit) -> str: def country_conversion(political_unit) -> str:

View File

@ -1 +1,6 @@
from app import app from app import app
from database import db_setup, export, parser
db_setup.main()
parser.main()
export.main()