51 lines
2.3 KiB
Python
51 lines
2.3 KiB
Python
from django.core.management.base import BaseCommand
|
|
from users.models import UserActivityLog
|
|
from asgiref.sync import sync_to_async
|
|
from django.db import connections
|
|
|
|
class Command(BaseCommand):
|
|
help = "Импорт данных из таблицы wpts_user_activity_log в локальную базу"
|
|
|
|
def handle(self, *args, **kwargs):
|
|
self.stdout.write("Начало импорта данных...")
|
|
|
|
try:
|
|
# Подключение к основной базе данных (wordpress)
|
|
with connections['wordpress'].cursor() as cursor:
|
|
cursor.execute("SELECT * FROM wpts_user_activity_log")
|
|
rows = cursor.fetchall()
|
|
|
|
# Сохранение данных в локальной базе
|
|
for row in rows:
|
|
UserActivityLog.objects.update_or_create(
|
|
id=row[0], # Используем поле id как уникальный ключ
|
|
defaults={
|
|
'user_id': row[1],
|
|
'ip': row[2],
|
|
'created': row[3],
|
|
'timestamp': row[4],
|
|
'date_time': row[5],
|
|
'referred': row[6],
|
|
'agent': row[7],
|
|
'platform': row[8],
|
|
'version': row[9],
|
|
'model': row[10],
|
|
'device': row[11],
|
|
'UAString': row[12],
|
|
'location': row[13],
|
|
'page_id': row[14],
|
|
'url_parameters': row[15],
|
|
'page_title': row[16],
|
|
'type': row[17],
|
|
'last_counter': row[18],
|
|
'hits': row[19],
|
|
'honeypot': row[20],
|
|
'reply': row[21],
|
|
'page_url': row[22],
|
|
}
|
|
)
|
|
|
|
self.stdout.write(self.style.SUCCESS("Импорт завершён успешно!"))
|
|
except Exception as e:
|
|
self.stderr.write(self.style.ERROR(f"Ошибка импорта: {str(e)}"))
|