Ломается функция при импорте

Есть такой код:

import sqlite3
    connection = sqlite3.connect('database.sqlite', check_same_thread=False)
    
    def client_add(connect):
        cursor = connect.cursor()
        try:
            cursor.execute("""
                INSERT INTO 
                    clients (first_name, last_name, dob, email, created_at)
                VALUES 
                    ("!", "!", "!", "!", "!")
                """)
            connect.commit()
            print("Success!")
        except Exception as e:
        print(f"Error:  {e}")

Когда запускаю client_add из своего файла - всё работает (в терминале Success, запись добавляется в БД). НО когда импортирую connection и client_add в другой модуль в виде:

from fastapi import FastAPI
from models.models import Client
from data import sqlite


app = FastAPI()


@app.post("/client_add")
def client_add(c: Client):
    try:
        sqlite.client_add(sqlite.connection)
    except Exception as e:
        print(f'Ошибка - {e}')

И кидаю POST запрос через postman, то в терминале также Success, но в БД новой записи нет.


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

Автор решения: OlegXio

Насколько я понял, из второго кода строка from data import sqlite значит, что структура ваша такая:

РабочаяПапка
├───ВторойКод.py
└───data
    ├───sqlite.py (Первый код)
    └───database.sqlite (база)

И, вероятнее всего, ВторойКод.py запрашивает базу в папке РабочаяПапка, а не data. Вам нужно в connection указать полный путь (напр. C:/Users/Mikhail/РабочаяПапка/data/database.sqlite)

→ Ссылка