From 5b454133457571a7db0869dbb7708e357c0ae44d Mon Sep 17 00:00:00 2001 From: mrmur Date: Tue, 29 Mar 2022 18:59:34 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=B1=D0=B0=D0=B7=D0=B0=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= =?UTF-8?q?,=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D0=B0=20=D1=82=D0=B0?= =?UTF-8?q?=D0=B1=D0=BB=D0=B8=D1=86=D0=B0=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/__all_models.py | 1 + data/db_session.py | 30 ++++++++++++++++++++++++++++++ data/users.py | 21 +++++++++++++++++++++ data/Заглушка.gitkeep | 0 db/Заглушка.gitkeep | 0 main.py | 13 +++++-------- templates/base.html | 2 +- templates/Заглушка.gitkeep | 0 8 files changed, 58 insertions(+), 9 deletions(-) create mode 100644 data/__all_models.py create mode 100644 data/db_session.py create mode 100644 data/users.py delete mode 100644 data/Заглушка.gitkeep delete mode 100644 db/Заглушка.gitkeep delete mode 100644 templates/Заглушка.gitkeep diff --git a/data/__all_models.py b/data/__all_models.py new file mode 100644 index 0000000..8da95e6 --- /dev/null +++ b/data/__all_models.py @@ -0,0 +1 @@ +from . import users \ No newline at end of file diff --git a/data/db_session.py b/data/db_session.py new file mode 100644 index 0000000..8323fef --- /dev/null +++ b/data/db_session.py @@ -0,0 +1,30 @@ +import sqlalchemy as sa +import sqlalchemy.orm as orm +from sqlalchemy.orm import Session +import sqlalchemy.ext.declarative as dec + +SqlAlchemyBase = dec.declarative_base() + +__factory = None + +def global_init(db_file): + global __factory + + if __factory: + return + + if not db_file or not db_file.strip(): + raise Exception("Необходимо указать файл базы данных.") + + conn_str = f'sqlite:///{db_file.strip()}?check_same_thread=False' + + engine = sa.create_engine(conn_str, echo=False) + __factory = orm.sessionmaker(bind=engine) + + from . import __all_models + + SqlAlchemyBase.metadata.create_all(engine) + +def create_session() -> Session: + global __factory + return __factory() \ No newline at end of file diff --git a/data/users.py b/data/users.py new file mode 100644 index 0000000..6717d62 --- /dev/null +++ b/data/users.py @@ -0,0 +1,21 @@ +import sqlalchemy +from datetime import date +from .db_session import SqlAlchemyBase + + +class User(SqlAlchemyBase): + __tablename__ = 'users' + + id = sqlalchemy.Column(sqlalchemy.Integer, + primary_key=True, autoincrement=True) + name = sqlalchemy.Column(sqlalchemy.String, nullable=True) + surname = sqlalchemy.Column(sqlalchemy.String, nullable=True) + login = sqlalchemy.Column(sqlalchemy.String, nullable=True) + age = sqlalchemy.Column(sqlalchemy.Integer, nullable=True) + email = sqlalchemy.Column(sqlalchemy.String, + index=True, unique=True, nullable=True) + about = sqlalchemy.Column(sqlalchemy.String, nullable=True) + photo = sqlalchemy.Column(sqlalchemy.Text) + password = sqlalchemy.Column(sqlalchemy.String, nullable=True) + data_reg = sqlalchemy.Column(sqlalchemy.Date, + default=date.today()) diff --git a/data/Заглушка.gitkeep b/data/Заглушка.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/db/Заглушка.gitkeep b/db/Заглушка.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/main.py b/main.py index 90224c4..09fc9c8 100644 --- a/main.py +++ b/main.py @@ -1,17 +1,14 @@ -from flask import Flask, render_template +from flask import Flask +from data import db_session app = Flask(__name__) app.config['SECRET_KEY'] = 'moona_secret_key' -@app.route('/') -def index(): - return render_template('base.html') - - -def run_web(): +def main(): + db_session.global_init("db/moona_data.db") app.run() if __name__ == '__main__': - run_web() + main() \ No newline at end of file diff --git a/templates/base.html b/templates/base.html index 8e5a2f1..d0f2185 100644 --- a/templates/base.html +++ b/templates/base.html @@ -7,7 +7,7 @@ href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> - {{Title}} + {{title}}