Рассматривали ли вы использование каркаса модели Django, который позволяет вам взаимодействовать с любой таблицей в качестве объекта python.
в существующей базе данных вы можете преобразовать ее в модель, как описано здесь , это просто вопрос настройки вашего db в файле настроек django
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB_NAME',
'USER': 'DB_USER',
'PASSWORD': 'DB_PASSWORD',
'HOST': 'localhost', # Or an IP Address that your DB is hosted on
'PORT': '3306',
}
}
затем вы можете использовать django ops для создания моделей из таблиц
$ python manage.py inspectdb > models.py
в результате вы получите какое-то определение объекта в файле models.py
, к которому вы сможете получить доступ.
В результате вы получите некоторый объект (не слишком много зная о вашей БД), например, к которому нужно просто добавить дескриптор __str__()
, чтобы при печати объекта он был правильно отформатирован:
from django.db import models
class ShortSellDetails(models.Model):
id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
name = models.CharField()
bubble = models.CharField()
review = models.TextField()
def __str__(self):
return "VALUES ({0},{1}, {2})".format(
self.name,self.bubble,self.review)
затем вы можете взаимодействовать с этим объектом, как и все модели (убедитесь, что вы добавили свою модель в INSTALLED APPS
, например, shortSell
и выполнили ./manage.py makemigrations & ./manage.py migrate
), например:
from shortSell import ShortSellDetails
details = ShortSellDetails.object.all()
for detail in details:
print(detail)
Или вы можете просто создать объекты напрямую, используя интерфейс модели
from bs4 import BeautifulSoup
import requests
from shortSell import ShortSellDetails
URL = "https://www.tripadvisor.com.au/Restaurants-g255068-c8-Brisbane_Brisbane_Region_Queensland.html"
response = requests.get(URL)
soup = BeautifulSoup(response.text,"lxml")
for items in soup.find_all(class_="shortSellDetails"):
name = items.find(class_="property_title").get_text(strip=True)
bubble = items.find(class_="ui_bubble_rating").get("alt")
review = items.find(class_="reviewCount").get_text(strip=True)
ShortSellDetails.objects.create(
name=name,
bubble=bubble,
review=review)
details = ShortSellDetails.object.all()
for detail in details:
print(detail)