[dak/master] Work with newer SQLAlchemy versions
Newer SQLAlchemy versions seem to track the `binary` attribute of
`BinaryMetadata`. This means the association proxy in `DBBinary`
would first create a `BinaryMetadata` with `binary` set to `None`,
flush this to the database and then set the actual value of `binary`
we want. However the flush fails, as `NULL` is not allowed for the
`binary_id` column.
The problem can be avoided by not setting `binary` to `None`. This is
treated as an "undefined value" by SQLAlchemy and changing it later
means the database row never sees `NULL`.
The same applies to the `source` attribute of `SourceMetadata`.
---
daklib/dbconn.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/daklib/dbconn.py b/daklib/dbconn.py
index 3a7f55b..3d3561f 100755
--- a/daklib/dbconn.py
+++ b/daklib/dbconn.py
@@ -2158,7 +2158,8 @@ class BinaryMetadata(ORMObject):
def __init__(self, key = None, value = None, binary = None):
self.key = key
self.value = value
- self.binary = binary
+ if binary is not None:
+ self.binary = binary
def properties(self):
return ['binary', 'key', 'value']
@@ -2174,7 +2175,8 @@ class SourceMetadata(ORMObject):
def __init__(self, key = None, value = None, source = None):
self.key = key
self.value = value
- self.source = source
+ if source is not None:
+ self.source = source
def properties(self):
return ['source', 'key', 'value']
--
2.1.4
Reply to: