Я использую Джанго.
После запуска миграции управления Python БД создается нормально. Однако через некоторое время БД внезапно исчезает. Команда drop не существует в моем коде.
Мне любопытно, почему БД удалена. Все данные удалены. (БД, Коллекция, Поле)
Кто-нибудь знает причину?
Это мой код
ниже кода — приложение/модели
from djongo import models
class RealTime(models.Model):
_id = models.CharField(max_length=255, primary_key=True)
site = models.CharField(max_length=125)
title = models.CharField(max_length=255)
url = models.URLField()
create_time = models.DateTimeField()
GPTAnswer = models.TextField()
class Meta:
db_table = 'realtimebest'
class Daily(models.Model):
rank = models.IntegerField()
title = models.CharField(max_length=255)
url = models.URLField()
create_time = models.DateTimeField()
Ниже приведен код схемы:
import graphene
from graphene_django.types import DjangoObjectType
from graphene import Mutation
from .views import board_summary
from .communityWebsite.models import RealTime, Daily
class RealTimeType(DjangoObjectType):
class Meta:
model = RealTime
class DailyType(DjangoObjectType):
class Meta:
model = Daily
class Query(graphene.ObjectType):
all_realtime = graphene.List(RealTimeType)
all_daily = graphene.List(DailyType)
def resolve_all_realtime(self, info, **kwargs):
return RealTime.objects.all()
def resolve_all_daily(self, info, **kwargs):
return Daily.objects.all()
class SummaryBoardMutation(Mutation):
class Arguments:
board_id = graphene.String(required=True)
response = graphene.String()
def mutate(self, info, board_id):
response = board_summary(board_id)
return SummaryBoardMutation(response=response)
class Mutation(graphene.ObjectType):
summary_board = SummaryBoardMutation.Field()
schema = graphene.Schema(query=Query, mutation=Mutation)
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
"corsheaders",
# Graph QL
'graphene_django',
'graphene_mongo',
'webCrwaling',
'kingwangjjang',
'chatGPT'
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'corsheaders.middleware.CorsMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'kingwangjjang.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 'DIRS': [],
"DIRS": [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'kingwangjjang.wsgi.application'
# Database
# MongoDB settings
DB_URI = 'mongodb://'+ DB_HOST + '/' + DB_USER + ':' + DB_PASSWORD
DATABASES = {
'default': {
'ENGINE': 'djongo',
'NAME': DB_NAME,
'ENFORCE_SCHEMA': True,
'CLIENT': {
'host': DB_URI
}
}
}
# Password validation
# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/5.0/topics/i18n/
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
USE_I18N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/5.0/howto/static-files/
STATIC_URL = 'static/'
# Default primary key field type
# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
# GRAPHENE = {
# "SCHEMA": "webCrwaling.schema.schema"
# }
Вставить данные
def get_real_time_best(self):
req = requests.get('https://www.dcinside.com/', headers=self.g_headers[0])
html_content = req.text
soup = BeautifulSoup(html_content, 'html.parser')
li_elements = soup.select('#dcbest_list_date li')
already_exists_post = []
for li in li_elements:
p_element = li.select_one('.box.besttxt p')
a_element = li.select_one('.main_log')
time_element = li.select_one('.box.best_info .time')
if p_element and a_element and time_element:
p_text = p_element.get_text(strip=True)
a_href = a_element['href']
no_value = a_href.split('no=')[-1]
time_text = time_element.get_text(strip=True)
if (time_text.find('-') > 0):
break # 오늘 것만 추가 (이전 글은 제외 (DB에서 확인))
# 시간 13:40 -> 2024.01.29 13:40 로 수정
now = datetime.now()
hour, minute = map(int, time_text.split(':'))
# 시간 설정 및 datetime 객체 생성
target_datetime = datetime(now.year, now.month, now.day, hour, minute)
try:
existing_instance = RealTime.objects.filter(_id=no_value).first()
if existing_instance:
already_exists_post.append(no_value)
continue
else:
RealTime.objects.get_or_create(
_id=no_value,
defaults = {
'site' : 'dcinside',
'title': p_text,
'url': a_href,
'create_time': target_datetime,
'GPTAnswer': DEFAILT_GPT_ANSWER
}
)
except IntegrityError:
continue
print("already exists post", already_exists_post)
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' Может ли это быть проблемой?
Какую часть необходимо изменить, чтобы решить проблему полного исчезновения данных?
Но Python manage migrate
это нормально
Каждый раз, когда вы меняете поля модели, вам также необходимо изменить схему базы данных: запуск python manage.py makemigrations
подготавливает рецепт для этих изменений, а python manage.py migrate
применяет этот рецепт к базе данных.
База данных удалена..
Я всегда так делаю.
Пожалуйста, уточните вашу конкретную проблему или предоставьте дополнительную информацию, чтобы выделить именно то, что вам нужно. Поскольку сейчас написано, трудно точно сказать, о чем вы спрашиваете.
Нет, python manage.py migrate
не удалит вашу базу данных.
Он отредактирован: «Мне любопытно, почему БД удалена. Все данные удалены. (БД, Коллекция, Поле)»
Привет, не могли бы вы вставить ошибку, это даст лучшее представление о том, о чем вы говорите?
Я не знаю.. Когда БД удалили
Никаких сообщений об ошибках. Я не думаю, что есть даже какое-то конкретное время. Возможно, это ситуация, с которой я не знаком.
Команда migrate
не удаляет вашу базу данных, если у вас нет миграции, которая делает это. Не совсем понятно, о чем вы здесь спрашиваете. Уточните, пожалуйста, в чем конкретно проблема.
Исправил пост. Извините за путаницу в содержании.
Возможно, было бы лучше, если бы вы прочитали документацию по миграции и поняли это, прежде чем редактировать свой вопрос. Как сейчас спрашивают, мы понятия не имеем, в чем проблема.
Что говорит журнал БД? Это будет отправной точкой для расследования!
Я добавил процесс аутентификации в mongodb, который решил проблему исчезновения базы данных. Проверка журнала, как предложено в комментариях, позволила мне найти это решение.
Что вы имеете в виду под «проблемой полного исчезновения данных»?