Added sqlalchemy, models, ...

This commit is contained in:
Administrator 2022-03-13 20:43:24 +01:00
parent 6fd210d91d
commit 90aae3b78a
5 changed files with 93 additions and 2 deletions

View File

@ -1,4 +1,8 @@
from flask import Flask
from flask import Flask, jsonify
from dotenv import load_dotenv
from db import db
from models import User
app = Flask(__name__)
@ -8,5 +12,32 @@ def hello_world():
return 'Hello World!'
@app.route('/users')
def users():
res = []
for i in User.query.all():
res.append(i.to_dict(show='*'))
return jsonify(res)
ded
def create_app():
load_dotenv()
# Create Flask app load app.config
application = Flask(__name__)
application.config.from_object("config.ConfigClass")
application.app_context().push()
db.init_app(application)
return application
app = create_app()
# Start development web server
if __name__ == '__main__':
app.run()

21
webservice/config.py Normal file
View File

@ -0,0 +1,21 @@
import os
from dotenv import load_dotenv
load_dotenv()
class ConfigClass(object):
""" Flask application config """
# Flask settings
SECRET_KEY = os.getenv('SECRET_KEY')
# Flask-SQLAlchemy settings
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://" + \
os.getenv('MYSQL_USER') + ":" + \
os.getenv('MYSQL_PASSWORD') + "@" + \
os.getenv('MYSQL_HOST') + ":" + \
(os.getenv("MYSQL_PORT") or str(3306)) + "/" + \
os.getenv('MYSQL_DATABASE')
SQLALCHEMY_TRACK_MODIFICATIONS = False # Avoids SQLAlchemy warning

3
webservice/db.py Normal file
View File

@ -0,0 +1,3 @@
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

34
webservice/models.py Normal file
View File

@ -0,0 +1,34 @@
from db import db
class User(db.Model):
__tablename__ = 'users'
username = db.Column('username', db.String(255), nullable=False, unique=True, primary_key=True)
password = db.Column('password', db.String(255), nullable=False, server_default='')
user_id = db.Column('user_id', db.Integer(), nullable=False, server_default='')
telegram_name = db.Column('telegram_name', db.String(255), nullable=True, server_default='')
admin = db.Column('admin', db.Boolean(), server_default="false")
class Transaction(db.Model):
__tablename__ = 'transactions'
t_id = db.Column('t_id', db.Integer(), nullable=False, unique=True, primary_key=True)
username = db.Column('username', db.Integer(), db.ForeignKey('user.user_id', ondelete='CASCADE'))
symbol = db.Column('symbol', db.String(255), unique=True)
time = db.Column('time', db.DateTime())
count = db.Column('count', db.Integer())
price = db.Column('price', db.Float())
class Keyword(db.Model):
__tablename__ = 'keywords'
s_id = db.Column('s_id', db.Integer(), nullable=False, unique=True, primary_key=True)
username = db.Column('username', db.Integer(), db.ForeignKey('user.user_id', ondelete='CASCADE'))
keyword = db.Column('keyword', db.String(255))
class Share(db.Model):
__tablename__ = 'shares'
a_id = db.Column('a_id', db.Integer(), nullable=False, unique=True, primary_key=True)
username = db.Column('username', db.Integer(), db.ForeignKey('user.user_id', ondelete='CASCADE'))
symbol = db.Column('symbol', db.String(255))

View File

@ -2,3 +2,5 @@ Flask~=2.0.3
python-dotenv==0.19.2
requests==2.27.1
uwsgi==2.0.20
Flask_SQLAlchemy==2.5.1
python-dotenv==0.19.2