Проблема с движком Django SQLAlchemy - данные не передаются в базу данных при использовании Pandas
Моя задача - взять данные из excel и загрузить их в базу данных. Я использую SQLAlchemy (с Pandas df) для этого, но у меня не получается. Когда я пытаюсь использовать ORM bulk_create, он работает, что наводит меня на мысль, что Django сторона вещей (например, шаблоны, url, представления, соединения моделей) работает нормально, и может быть какая-то проблема в определении движка Alchemy?
Мне нужна ваша помощь для отладки и решения этой проблемы. Детали моего кода приведены ниже. Пожалуйста, обратите внимание, что я не получаю никаких ошибок в терминале vscode, просто когда я нажимаю на кнопку Add/ replace, данные не передаются. Буду признателен за помощь... большое спасибо...
Детали движка SQLAlchemy (сохранены в engine.py)
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from django.conf import settings
engine = create_engine('postgresql://' +
settings.DATABASES['default']['USER'] + ':' +
settings.DATABASES['default']['PASSWORD'] + '@' +
settings.DATABASES['default']['HOST'] + ':' +
str(settings.DATABASES['default']['PORT']) + '/' +
settings.DATABASES['default']['NAME'])
Session = sessionmaker(bind=engine)
session = Session()
views.py
from .models import Industry
from .engine import engine, session
import pandas as pd
def industry_import_replace(request):
df = pd.read_excel('Industry.xlsx')
df.to_sql('Industry', engine, if_exists='replace', index=False)
return render(request, 'portfolio/partials/imports/industry-import.html',{})
шаблон (html)
<form method="post">
<div class="row">
<div class="col col-md-4 col-lg-4">
<table class="table">
<thead>
<tr>
<th scope="col-md-4 col-lg-4">Imports</th>
<th scope="col-md-4 col-lg-4"> </th>
<th scope="col-md-4 col-lg-4"> </th>
</tr>
</thead>
<tbody>
<tr>
<th scope="col-md-4 col-lg-4">Industry</th>
<td>
<button type="submit" name="action" value="replace" class="btn btn-danger"
hx-post="{% url 'portfolio:industry-import-replace' %}" hx-target="#imports">Add/ Replace</button>
</td>
<td>
<button type="submit" name="action" value="append" class="btn btn-success"
hx-post="{% url 'portfolio:industry-import-append' %}" hx-target="#imports">Append</button>
</td>
</tr>
</tbody>
<div id="imports"></div>
</div>
данные файла Excel
Расположены в самом верху; без заголовков строк и т.д.. ID название_отрасли Инд1 Инд2 Инд3
Файл отраслевой модели
class Industry(models.Model):
industry_name = models.CharField(max_length=100, unique=True)
class Meta:
verbose_name_plural = 'Industry'
def __str__(self):
return self.industry_name