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}}