SQLAlchemy - AttributeError: объект 'str' не имеет атрибута 'body'

Мне нужно сохранить некоторые данные с помощью SQLAlchemy. Оператор Insert работает нормально, когда sqlalchemy create_engine инициализируется внутри файла, в котором живет функция

from sqlalchemy import create_engine
from sqlalchemy.sql import text
engine = create_engine('sqlite:///db.sqlite3')

// это будет работать

@csrf_exempt
def save(request):
     payload = json.loads(request.body.decode('utf-8'))['data']
     payload = payload['body']
     response = cu.call("externalapi/someendpoint",
                   payload=json.dumps(payload), method="POST")
     id = response['id']
     statement = f"""INSERT INTO consignments(consignment_id) VALUES({id})"""
     with engine.connect as con:
          con.execute(statement)
    

// это не сработает

from utils import create_consignment
@csrf_exempt
def save(request):
     payload = json.loads(request.body.decode('utf-8'))['data']
     payload = payload['body']
     response = cu.call("externalapi/someendpoint",
                   payload=json.dumps(payload), method="POST")
     id = response['id']
     statement = f"""INSERT INTO consignments(consignment_id) VALUES({id})"""
     create_consignment(statement)

   //this will throw error 
  `payload = json.loads(request.body.decode('utf-8'))['data']
   AttributeError: 'str' object has no attribute 'body'`
   // If I remove the `create_consignment`, the error gone

Итак, метод create_consignment - это просто строки кода, извлеченные, чтобы сделать его более пригодным для повторного использования

utils/create_consignment.py

  import sqlalchemy as db
  from sqlalchemy.sql import text
 
  engine = db.create_engine('sqlite:///db.sqlite3',
                      connect_args={'check_same_thread': False})

  def create_consignment(stmt):
     with engine.connect() as con:
        statement = text(stmt)

        con.execute(statement)
    

Есть идеи, что происходит и как предотвратить эту ошибку?

Вернуться на верх