示例#1
0
            'real': self.real,
            'character_teams': t,
            'character_volumes': v
        }
        return ans

    def __repr__(self):
        return 'Character(name={}, image={}, birth={}, gender={}, creator={}, publisher={}, appear={}, real={}, num_appearances={}'.format(
            self.name, self.image, self.birth, self.gender, self.creator,
            self.publisher_name, self.appear, self.real,
            self.num_appearances) + ")"


# Trigger that updates Characters and their triggers
CHARACTER_VECTOR_TRIGGER = db.DDL("""
    CREATE TRIGGER character_tsvector_update BEFORE INSERT OR UPDATE ON "Character" FOR EACH ROW EXECUTE PROCEDURE
    tsvector_update_trigger(tsvector_col, 'pg_catalog.english', 'name', 'publisher_name', 'appear' )
    """)
db.event.listen(Character.__table__, 'after_create',
                CHARACTER_VECTOR_TRIGGER.execute_if(dialect='postgresql'))


class Volume(db.Model):
    """
    image: image url
    description: info on volume
    count_of_issues: num issues in volume
    start_year: when volume started
    publisher: main publisher
    characters: characters in volume
    teams: teams in the characters
    name: name of volume
示例#2
0
    duration = db.Column(db.String(10))
    listed_in = db.Column(db.Text)
    description = db.Column(db.Text)
    tsv_searchable_text = db.Column(TSVECTOR)

    __table_args__ = (db.Index('tsv_idx', 'tsv_searchable_text', postgresql_using = 'gin'),)

    def __repr__(self):
        return f'<Show {self.title}>'

function_snippet = db.DDL("""
    CREATE FUNCTION tsv_searchable_text_trigger() RETURNS trigger AS $$
    begin
    new.tsv_searchable_text :=
        setweight(to_tsvector('pg_catalog.english', coalesce(new.title,'')), 'A') ||
        setweight(to_tsvector('pg_catalog.english', coalesce(new.description,'')), 'B') ||
        setweight(to_tsvector('pg_catalog.english', coalesce(new.director,'')), 'C') ||
        setweight(to_tsvector('pg_catalog.english', coalesce(new.actors,'')), 'C');
    return new;
    end
    $$ LANGUAGE plpgsql;
""")
    
trigger_snippet = db.DDL("""
    CREATE TRIGGER searchable_text_update BEFORE INSERT OR UPDATE
    ON show
    FOR EACH ROW EXECUTE PROCEDURE tsv_searchable_text_trigger();
""")

db.event.listen(Show.__table__, 'after_create', function_snippet.execute_if(dialect = 'postgresql'))
db.event.listen(Show.__table__, 'after_create', trigger_snippet.execute_if(dialect = 'postgresql'))