Я хочу вставить данные в базу данных MySQL с помощью Django

#python #mysql #django #database #beautifulsoup

Вопрос:

Я занимаюсь веб-очисткой и хочу сохранить информацию в базе данных. У меня есть соединение с базой данных в файле «настройки», как это:

 DATABASES = {  'default': {  'ENGINE': 'django.db.backends.mysql',  'NAME': 'dbname',  'USER': 'root',  'PASSWORD': 'password',  'HOST': 'localhost',  'PORT': 'port'  } }  

Веб-соскоб у меня есть в другом файле, похожем на этот:

 from bs4 import BeautifulSoup import requests  url = "https://www.somepage.com" result = requests.get(url) soup = BeautifulSoup(result.text, "html.parser")  find_by_class = soup.find('div', attrs={"class":"body"}).find_all('p')  

Я хочу сохранить то, что находится в find_by_class, в базе данных.

Также я создал модели.

 from django.db import models  class SomeModel(models.Model):  description = models.TextField(max_length=1000)   

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

1. Покажите нам, что вы пытались связать свой фрагмент кода с вашей моделью! До сих пор я не вижу никакой связи между этими двумя.

2. @КлаусД. Я попытался сделать запись from models import SomeModel в файле для очистки, а затем попробовал это description = find_by_class . Но, конечно, это не сработало.

Ответ №1:

Я предполагаю, что вы выполнили миграцию в базе данных (если нет, то в корневой папке вашего проекта, запустите python manage.py makemigrations и затем python manage.py migrate ).

Теперь вам нужно использовать следующий фрагмент кода:

 from bs4 import BeautifulSoup import requests from .models import SomeModel  url = "https://www.somepage.com" result = requests.get(url) soup = BeautifulSoup(result.text, "html.parser") find_by_class = soup.find('div', attrs={"class":"body"}).find_all('p')  for each in find_by_class:  SomeModel.objects.create(description=each.text)  

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

1. Да, я сделал миграции и создал файл 0001_initial.

2. Это отображается в выводе: «ModuleNotFoundError: Нет модуля с именем «модели» »

3. Файл, содержащий отбракованный код и модели, должен находиться в той же папке приложения django. еще импортируйте модель из какого-нибудь приложения, например from appname.models import SomeModel

4. Теперь я получаю следующее: «Импортер: попытка относительного импорта без известного родительского пакета». Попробуйте создать новый проект для проверки, и произойдет то же самое.

5. Удалите». » из моделей и получите это: ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.