я получаю эту ошибку: ожидаемый str, байты или os.Объект, подобный пути, не является файлом при вызове file в db

#python #sqlalchemy

#python #sqlalchemy

Вопрос:

я создал sqlalchemy db и загрузил cs-файл. но когда я пытаюсь вызвать fie, который внутри db всегда показывает эту ошибку

Ошибка: ожидаемый str, байты или os.Объект типа PathLike, а не File

есть ли какая-либо возможность изменить запрос файла на путь к файлу? если я изменю open(my_data, новая строка =») как f: на open(«augut.csv», новая строка =») как f: его работа. но я хочу вызвать file, который уже хранится в db.

»’

 @app.route("/proses/<id>/", methods=["GET"])

def proses(id):
    my_data = File.query.get(id)
    with open(my_data, newline='') as f:
        reader = csv.reader(f)
        data = list(reader)
    transactions = data
    patterns = pyfpgrowth.find_frequent_patterns(transactions, len(transactions) * 20/100)
    rules = pyfpgrowth.generate_association_rules(patterns, 0.5)
    return str(rules)
  

»’

Ответ №1:

Вызов для File.query.get(id) возврата File экземпляра. Вам нужно получить имя файла из my_data и использовать его с open

Предполагая, что у вас есть что-то вроде:

 class File(Base):
    __tablename__ = 'some_table'
    id = Column(Integer, primary_key=True)
    name =  Column(String(50))
  

вызов to my_data.name вернет имя файла

Комментарии:

1. 1) поделитесь своим классом файла 2) продолжайте использовать File.query.get(id) , который вернет экземпляр File .

2. вместо этого я добавляю эту ошибку FileNotFoundError: [Ошибка № 2] Нет такого файла или каталога: ‘april.csv’

3. это означает, что вам нужно сохранить файл в БД, используя полный путь: Пример: /files/april.csv . В любом случае — эта проблема не связана с вашим первоначальным вопросом.

4. да, при перемещении файла csv в ту же папку, что и папка python, ошибки нет

5. можете ли вы привести мне пример сохранения файла в db с использованием полного пути?