From: Torsten Werner Date: Tue, 11 Jan 2011 19:55:08 +0000 (+0000) Subject: dbconn.py: workaround for good old sqlalchemy 0.5 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=590f27f0d1ecfdba6d4460de8e3ebbe60f1ee21a;p=dak dbconn.py: workaround for good old sqlalchemy 0.5 Signed-off-by: Torsten Werner --- diff --git a/daklib/dbconn.py b/daklib/dbconn.py index 80eaa19c..786aebde 100755 --- a/daklib/dbconn.py +++ b/daklib/dbconn.py @@ -45,7 +45,7 @@ from tempfile import mkstemp, mkdtemp from inspect import getargspec import sqlalchemy -from sqlalchemy import create_engine, Table, MetaData +from sqlalchemy import create_engine, Table, MetaData, Column, Integer from sqlalchemy.orm import sessionmaker, mapper, relation from sqlalchemy import types as sqltypes @@ -2760,25 +2760,21 @@ class DBConn(object): self.__createconn() def __setuptables(self): - tables = ( + tables_with_primary = ( 'architecture', 'archive', 'bin_associations', 'binaries', 'binary_acl', 'binary_acl_map', - 'bin_contents', 'build_queue', 'build_queue_files', + 'changelogs_text', 'component', 'config', 'changes_pending_binaries', 'changes_pending_files', - 'changes_pending_files_map', 'changes_pending_source', - 'changes_pending_source_files', - 'changes_pool_files', - 'deb_contents', 'dsc_files', 'files', 'fingerprint', @@ -2788,7 +2784,6 @@ class DBConn(object): 'location', 'maintainer', 'new_comments', - 'override', 'override_type', 'pending_bin_contents', 'policy_queue', @@ -2800,15 +2795,33 @@ class DBConn(object): 'src_format', 'src_uploaders', 'suite', + 'uid', + 'upload_blocks', + ) + + tables_no_primary = ( + 'bin_contents', + 'changes_pending_files_map', + 'changes_pending_source_files', + 'changes_pool_files', + 'deb_contents', + 'override', 'suite_architectures', 'suite_src_formats', 'suite_build_queue_copy', 'udeb_contents', - 'uid', - 'upload_blocks', ) - for table_name in tables: + # Sqlalchemy fails to reflect the SERIAL type correctly and that + # is why we have to use a workaround. It can be removed as soon + # as we switch to version 0.6. + for table_name in tables_with_primary: + table = Table(table_name, self.db_meta, \ + Column('id', Integer, primary_key = True), \ + autoload=True, useexisting=True) + setattr(self, 'tbl_%s' % table_name, table) + + for table_name in tables_no_primary: table = Table(table_name, self.db_meta, autoload=True) setattr(self, 'tbl_%s' % table_name, table)