21

Re: Просторові дані в mysql

ktretyak написав:
Q-bart написав:
at line 400: Cannot get geometry object from data you send to the GEOMETRY field

на 400 рядку

 INSERT INTO `photos` VALUES  

А наступне значення, після того що було проімпортовано останнім:

(3331,NULL,NULL,'DSC05290.JPG','',5516,'2010-07-24 10:13:38',0,0,'');

Поле координат стоїть 5, тож помилка на пустому рядку

''

...

На скільки я зрозумів, то ви вставляєте дані в поле GEOMETRY, яке ви не показали у структурі таблиці photos.

  `coords` point NOT NULL,

22

Re: Просторові дані в mysql

От тепер ще дві штуки:
1. Є модель. Вона має поле рейтинг, і користувача. Мені треба відсорутувати всі об'єкти за рейтингом, але вкінці мені треба буде виводити користувачів, тобто треба, щоб вони були унікальними. Тобто, якщо є обєкт з рейтингом 200 і користувач А, 150 і кор. А, 100 і кор. Б. - Мені треба вивести тільки об'єкти з користувачем А, Б (тільки два). Здається це має робити DISTINCT, тільки насправді, як я не зрозумів..

23

Re: Просторові дані в mysql

І ще один момент:
Є модель:

class Info(models.Model):
    report = models.ForeignKey(
        Report,
        related_name='catches_info',
        verbose_name='Отчёт',
    )
    weight = models.DecimalField(
        max_digits=7,
        decimal_places=2,
    )
    number = models.IntegerField(
        verbose_name=_('Количество'),
    )

Мені треба знайти загальну вагу: weight*number - відсорутвати за цим значенням, і вивести обєкти Info, з унікальними report і унікальними авторами що написали Report.

class Report(models.Model):
    # .....
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        related_name='reports',
        verbose_name=_('Пользователь'),
    )

24

Re: Просторові дані в mysql

Q-bart написав:
  `coords` point NOT NULL,

Так проблема ще існує? Це схоже на несумісність форматів між СУБД. Хоча може я на це дивлюсь сильно спрощено, але чи не пробували ви створити додаткові текстові поля на боці MySQL, щоб туди можна було перегнати значення з поля, з типом point? Потім можна буде зробити дамп, а вже на боці PostgreSQL перегнати текст у тип point.

25 Востаннє редагувалося ktretyak (03.03.2017 12:24:43)

Re: Просторові дані в mysql

Q-bart написав:

Здається це має робити DISTINCT, тільки насправді, як я не зрозумів..

distinct прибирає дублі, якщо абсолютно по усім полям у вибірці певні рядки мають ідентичні значення. Тобто якщо у вас є два різних значення рейтингу для одного користувача, то очевидно, що це не дублі.

Взагалі-то це елементарні правила агрегації за допомогою SQL, які можна вивчити за день (якщо теорія йде з практикою)...

У вашому випадку, агрегацію треба робити приблизно так:

select
  userName
  ,max(rating) as rating
from users
group by userName

26

Re: Просторові дані в mysql

ktretyak написав:
Q-bart написав:
  `coords` point NOT NULL,

Так проблема ще існує? Це схоже на несумісність форматів між СУБД. Хоча може я на це дивлюсь сильно спрощено, але чи не пробували ви створити додаткові текстові поля на боці MySQL, щоб туди можна було перегнати значення з поля, з типом point? Потім можна буде зробити дамп, а вже на боці PostgreSQL перегнати текст у тип point.

Проблему вже вирішив. Напряму конект до існуючої бази, з django PostgreSQL додатка. Проблема була в тому, що це поле було заповнене "" - пуста стрічка, тож і матюкалось.

Подякували: varkon1