Создание сессии БД Oracle flask

Подскажите пожалуйста как правильно создавать сессию для выборки данных из БД Oracle по условию. У меня есть БД на Oracle. В данном примере рассматриваю выборку из таблицы physical_person. Вот мой код:

import cx_Oracle as co
import os
from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
from datetime import date


db_user = os.environ.get('DBAAS_USER_NAME', '*****')
db_password = os.environ.get('DBAAS_USER_PASSWORD', '*******')
db_connect = os.environ.get('DBAAS_DEFAULT_CONNECT_DESCRIPTOR', "**********:****/*************")
service_port = os.environ.get('PORT', '8080')


app = Flask(__name__)
db = SQLAlchemy(app)

class PhysicalPerson(db.Model):
    __tablename__ = 'physical_person'

    subject_id = db.Column(db.String(20), primary_key=True, unique=True)
    last_name = db.Column(db.String(50))
    first_name = db.Column(db.String(25))
    middle_name = db.Column(db.String(25))
    sex = db.Column(db.String(1))
    birth_date = db.Column(db.DateTime)
    birth_place = db.Column(db.String(50))
    person_e_mail = db.Column(db.String(50))
    person_document_type = db.Column(db.Integer)
    person_document_serial = db.Column(db.String(15))
    person_document_number = db.Column(db.String(20))
    person_document_vydan_date = db.Column(db.DateTime)
    person_document_vydan = db.Column(db.String(300))

    def __repr__(self):
        return f'<physicalperson {self.id}>'


@app.route('/')
def connect_db():
    connection = co.connect(db_user, db_password, db_connect)
    cur = connection.cursor()
    cur.execute("""Select LAST_NAME, FIRST_NAME, MIDDLE_NAME, to_date(BIRTH_DATE) from physical_person pp
            where pp.LAST_NAME = '*******' and pp.first_name = '********' and pp.middle_name = '********'
    and pp.birth_date = to_date('**.**.****', 'dd.mm.yyyy')""")
    col = cur.fetchone()[0]
    cur.close()
    connection.close()
    return col


pp = db.session.query(PhysicalPerson).filter(PhysicalPerson.subject_id == 15931287).one()
print(pp)

Как работает соединение в модуле cx_Oracle понимаю, в функции он отрабатывает, если хотим работать с web-мордой, но опять же хотелось бы понимать на примере сессий, также понимаю что потом это придется расширять пулами соединений, но для начала понять бы как работает сессия. Не могу понять как создать сессию(работать с ней) которая будет работать внутри python и будет выдавать мне результат, при обращение к таблице определенной в классе PhysicalPerson. Этот вопрос относиться к последним двум строчкам кода:

pp = db.session.query(PhysicalPerson).filter(PhysicalPerson.subject_id == 15931287).one()
print(pp)

где я хочу понять есть ли например у меня человек с таким subject_id, и если есть вывел мне его информацию, согласно столбцам таблицы. При попытке выполнить запрос получаю ошибку, в которой он мне говорит что нету такой таблицы и просит перейти в документацию по созданию сессий:

C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\flask_sqlalchemy\__init__.py:851: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".
  warnings.warn(
C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\flask_sqlalchemy\__init__.py:872: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.  Set it to True or False to suppress this warning.
  warnings.warn(FSADeprecationWarning(
Traceback (most recent call last):
  File "C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\sqlalchemy\engine\base.py", line 1808, in _execute_context
    self.dialect.do_execute(
  File "C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\sqlalchemy\engine\default.py", line 732, in do_execute
    cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: physical_person

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:/Users/volodinko/PycharmProjects/DarK/app_v0.1/12312321.py", line 53, in <module>
    pp = db.session.query(PhysicalPerson).filter(PhysicalPerson.subject_id == 15931287).one()
  File "C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\sqlalchemy\orm\query.py", line 2856, in one
    return self._iter().one()
  File "C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\sqlalchemy\orm\query.py", line 2894, in _iter
    result = self.session.execute(
  File "C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\sqlalchemy\orm\session.py", line 1692, in execute
    result = conn._execute_20(statement, params or {}, execution_options)
  File "C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\sqlalchemy\engine\base.py", line 1620, in _execute_20
    return meth(self, args_10style, kwargs_10style, execution_options)
  File "C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\sqlalchemy\sql\elements.py", line 325, in _execute_on_connection
    return connection._execute_clauseelement(
  File "C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\sqlalchemy\engine\base.py", line 1487, in _execute_clauseelement
    ret = self._execute_context(
  File "C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\sqlalchemy\engine\base.py", line 1851, in _execute_context
    self._handle_dbapi_exception(
  File "C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\sqlalchemy\engine\base.py", line 2032, in _handle_dbapi_exception
    util.raise_(
  File "C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_
    raise exception
  File "C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\sqlalchemy\engine\base.py", line 1808, in _execute_context
    self.dialect.do_execute(
  File "C:\Users\volodinko\PycharmProjects\DarK\venv_1\lib\site-packages\sqlalchemy\engine\default.py", line 732, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: physical_person
[SQL: SELECT physical_person.subject_id AS physical_person_subject_id, physical_person.last_name AS physical_person_last_name, physical_person.first_name AS physical_person_first_name, physical_person.middle_name AS physical_person_middle_name, physical_person.sex AS physical_person_sex, physical_person.birth_date AS physical_person_birth_date, physical_person.birth_place AS physical_person_birth_place, physical_person.person_e_mail AS physical_person_person_e_mail, physical_person.person_document_type AS physical_person_person_document_type, physical_person.person_document_serial AS physical_person_person_document_serial, physical_person.person_document_number AS physical_person_person_document_number, physical_person.person_document_vydan_date AS physical_person_person_document_vydan_date, physical_person.person_document_vydan AS physical_person_person_document_vydan 
FROM physical_person 
WHERE physical_person.subject_id = ?]
[parameters: (15931287,)]
(Background on this error at: https://sqlalche.me/e/14/e3q8)

Заранее благодарю!


Ответы (0 шт):