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)
Есть идеи, что происходит и как предотвратить эту ошибку?