PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Изтриване от много към много SQL-Alchemy и Postgresql

Предполагам, че съобщението за грешка е правилно:наистина във вашата база данни имате 2 реда, които свързват Location и Heading инстанции. В този случай трябва да разберете къде и защо се е случило това на първо място и да предотвратите това да се случи отново

  1. Първо, за да потвърдите това предположение, можете да изпълните следната заявка към вашата база данни:

    q = session.query(
        headings_locations.c.location_id,
        headings_locations.c.heading_id,
        sa.func.count().label("# connections"),
    ).group_by(
        headings_locations.c.location_id,
        headings_locations.c.heading_id,
    ).having(
        sa.func.count() > 1
    )
    
  2. Ако приемем, предположението е потвърдено, коригирайте чрез ръчно изтриване на всички дубликати във вашата база данни (оставяйки само по един за всеки).

  3. След това добавете UniqueConstraint към вашите headings_locations таблица:

    headings_locations = db.Table('headings_locations',
            db.Column('id', db.Integer, primary_key=True),
            db.Column('location_id', db.Integer(), db.ForeignKey('location.id')),
            db.Column('headings_id', db.Integer(), db.ForeignKey('headings.id')),
            db.UniqueConstraint('location_id', 'headings_id', name='UC_location_id_headings_id'),
    )
    

Имайте предвид, че трябва да го добавите към базата данни, не е достатъчно да го добавите към sqlalchemy модел.

Сега кодът, в който дубликатите са вмъкнати по погрешка, ще се провали с изключение за нарушение на уникалното ограничение и можете да коригирате корена на проблема.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да изчислим само дни между две дати в заявка на postgres sql.

  2. Напредък в онлайн надстройката

  3. Генериране на поредица от дати, използвани в for цикъл

  4. PostgreSQL бавен на голяма таблица с масиви и много актуализации

  5. Преобразувайте обектен масив в масив, съвместим за nodejs/pg/unnest