Index: database.sql ================================================================== --- database.sql +++ database.sql @@ -134,15 +134,15 @@ LANGUAGE sql immutable STRICT AS $$ select mark(get_site($1), $2) as result; $$; --- this function sets tags for site/regexp pair +-- this function sets tags for site without regexp CREATE or replace FUNCTION set(my_id_site integer, my_id_tag integer) RETURNS integer LANGUAGE sql STRICT AS $$ -delete from urls where $1 = id_site and regexp is null; +delete from urls where $1 = id_site and regexp is NULL; insert into urls (id_site, id_tag) values ($1, $2); select $1; $$; -- this function sets tags for site/regexp pair Index: st-load.py ================================================================== --- st-load.py +++ st-load.py @@ -37,19 +37,23 @@ config['host'], config['database'], ) ) def load(self, csv_data): - insert = self._db.prepare("select set($1, $2, $3)") with self._db.xact(): config.section('loader') if config['drop_database']: self._db.execute('delete from urls;') if config['drop_site']: self._db.execute('delete from site;'); + insertreg = self._db.prepare("select set($1, $2, $3)") + insert = self._db.prepare("select set($1, $2)") for row in csv_data: - insert(row[0], row[1], row[2]) + if len(row[2]) > 0: + insertreg(row[0], row[1], row[2]) + else: + insert(row[0], row[1]) self._db.execute('vacuum analyze site;') self._db.execute('vacuum analyze urls;') # this classes processes config file and substitutes default values class Config: