def bulk_insert(cursor, rpm_nevra, filename, srpm_nevra=None): nvra = parse_nvra(rpm_nevra) if srpm_nevra: srpm_name = parse_nvra(srpm_nevra)["name"] else: srpm_name = nvra["name"] sql = add_returning("""INSERT INTO %s (name, epoch, version, release, arch, srpm_nevra, srpm_name, filename) VALUES (%%s, %%s, %%s, %%s, %%s, %%s, %%s, %%s)""" % RPM._meta.db_table) try: sid = transaction.savepoint() RPM.check_srpm_nevra(rpm_nevra, srpm_nevra) cursor.execute(sql, [nvra["name"], nvra["epoch"], nvra["version"], nvra["release"], nvra["arch"], srpm_nevra, srpm_name, filename]) if connection.features.can_return_id_from_insert: insert_id = connection.ops.fetch_returned_insert_id(cursor) else: insert_id = connection.ops.last_insert_id(cursor, RPM._meta.db_table, "id") except (IntegrityError, ValidationError): transaction.savepoint_rollback(sid) cursor.execute("""SELECT %s FROM %s WHERE name=%%s AND epoch=%%s AND version=%%s and release=%%s AND arch=%%s""" % ("id", RPM._meta.db_table), [nvra["name"], nvra["epoch"], nvra["version"], nvra["release"], nvra["arch"]]) insert_id = int(cursor.fetchone()[0]) transaction.savepoint_commit(sid) return insert_id
def bulk_insert(cursor, variant_arch_id, rpm_id, content_category_id, sigkey_id, path_id): sql = add_returning( """INSERT INTO %s (variant_arch_id, rpm_id, sigkey_id, content_category_id, path_id) VALUES (%%s, %%s, %%s, %%s, %%s)""" % ComposeRPM._meta.db_table) try: sid = transaction.savepoint() cursor.execute(sql, [ variant_arch_id, rpm_id, sigkey_id, content_category_id, path_id ]) if connection.features.can_return_id_from_insert: insert_id = connection.ops.fetch_returned_insert_id(cursor) else: insert_id = connection.ops.last_insert_id( cursor, ComposeRPM._meta.db_table, "id") except IntegrityError: transaction.savepoint_rollback(sid) cursor.execute( "SELECT %s FROM %s WHERE variant_arch_id=%%s AND rpm_id=%%s" % ("id", ComposeRPM._meta.db_table), [variant_arch_id, rpm_id]) insert_id = int(cursor.fetchone()[0]) transaction.savepoint_commit(sid) return insert_id
def bulk_insert(cursor, variant_arch_id, rpm_id, content_category_id, sigkey_id, path_id): sql = add_returning("""INSERT INTO %s (variant_arch_id, rpm_id, sigkey_id, content_category_id, path_id) VALUES (%%s, %%s, %%s, %%s, %%s)""" % ComposeRPM._meta.db_table) try: sid = transaction.savepoint() cursor.execute(sql, [variant_arch_id, rpm_id, sigkey_id, content_category_id, path_id]) if connection.features.can_return_id_from_insert: insert_id = connection.ops.fetch_returned_insert_id(cursor) else: insert_id = connection.ops.last_insert_id(cursor, ComposeRPM._meta.db_table, "id") except IntegrityError: transaction.savepoint_rollback(sid) cursor.execute("SELECT %s FROM %s WHERE variant_arch_id=%%s AND rpm_id=%%s" % ("id", ComposeRPM._meta.db_table), [variant_arch_id, rpm_id]) insert_id = int(cursor.fetchone()[0]) transaction.savepoint_commit(sid) return insert_id