silence SQLAlchemy warning about textual SQL expressions

上级 fd4c7d86
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
import apt_pkg import apt_pkg
from datetime import datetime, timedelta from datetime import datetime, timedelta
import sys import sys
import sqlalchemy.sql as sql
from daklib import daklog from daklib import daklog
from daklib.archive import ArchiveTransaction from daklib.archive import ArchiveTransaction
...@@ -65,7 +66,7 @@ def clean(build_queue, transaction, now=None): ...@@ -65,7 +66,7 @@ def clean(build_queue, transaction, now=None):
# 1. Keep binaries that are in policy queues. # 1. Keep binaries that are in policy queues.
# 2. Remove binaries that are not in suites. # 2. Remove binaries that are not in suites.
# 3. Remove binaries that have been in the build queue for some time. # 3. Remove binaries that have been in the build queue for some time.
query = """ query = sql.text("""
SELECT b.* SELECT b.*
FROM binaries b FROM binaries b
JOIN bin_associations ba ON b.id = ba.bin JOIN bin_associations ba ON b.id = ba.bin
...@@ -82,7 +83,7 @@ def clean(build_queue, transaction, now=None): ...@@ -82,7 +83,7 @@ def clean(build_queue, transaction, now=None):
OR NOT EXISTS OR NOT EXISTS
(SELECT 1 FROM bin_associations ba2 (SELECT 1 FROM bin_associations ba2
JOIN suite_build_queue_copy sbqc ON sbqc.suite = ba2.suite JOIN suite_build_queue_copy sbqc ON sbqc.suite = ba2.suite
WHERE ba2.bin = ba.bin AND sbqc.build_queue_id = :build_queue_id))""" WHERE ba2.bin = ba.bin AND sbqc.build_queue_id = :build_queue_id))""")
binaries = session.query(DBBinary).from_statement(query) \ binaries = session.query(DBBinary).from_statement(query) \
.params({'build_queue_id': build_queue.queue_id, 'suite_id': suite.suite_id, 'delete_before': delete_before}) .params({'build_queue_id': build_queue.queue_id, 'suite_id': suite.suite_id, 'delete_before': delete_before})
for binary in binaries: for binary in binaries:
...@@ -92,7 +93,7 @@ def clean(build_queue, transaction, now=None): ...@@ -92,7 +93,7 @@ def clean(build_queue, transaction, now=None):
# Remove sources # Remove sources
# Conditions are similar as for binaries, but we also keep sources # Conditions are similar as for binaries, but we also keep sources
# if there is a binary in the build queue that uses it. # if there is a binary in the build queue that uses it.
query = """ query = sql.text("""
SELECT s.* SELECT s.*
FROM source s FROM source s
JOIN src_associations sa ON s.id = sa.source JOIN src_associations sa ON s.id = sa.source
...@@ -114,7 +115,7 @@ def clean(build_queue, transaction, now=None): ...@@ -114,7 +115,7 @@ def clean(build_queue, transaction, now=None):
(SELECT 1 FROM bin_associations ba (SELECT 1 FROM bin_associations ba
JOIN binaries b ON ba.bin = b.id JOIN binaries b ON ba.bin = b.id
WHERE ba.suite = :suite_id WHERE ba.suite = :suite_id
AND b.source = s.id)""" AND b.source = s.id)""")
sources = session.query(DBSource).from_statement(query) \ sources = session.query(DBSource).from_statement(query) \
.params({'build_queue_id': build_queue.queue_id, 'suite_id': suite.suite_id, 'delete_before': delete_before}) .params({'build_queue_id': build_queue.queue_id, 'suite_id': suite.suite_id, 'delete_before': delete_before})
for source in sources: for source in sources:
......
...@@ -22,6 +22,7 @@ import daklib.daklog ...@@ -22,6 +22,7 @@ import daklib.daklog
import daklib.utils import daklib.utils
from sqlalchemy.orm.exc import NoResultFound from sqlalchemy.orm.exc import NoResultFound
import sqlalchemy.sql as sql
import sys import sys
""" """
...@@ -134,7 +135,7 @@ class SuiteUpdater(object): ...@@ -134,7 +135,7 @@ class SuiteUpdater(object):
'additional_sources': additional_sources, 'additional_sources': additional_sources,
} }
return self.transaction.session.query(DBBinary).from_statement(query).params(params) return self.transaction.session.query(DBBinary).from_statement(sql.text(query)).params(params)
def query_new_sources(self): def query_new_sources(self):
# Candidates are source packages in the origin suite, and optionally in its policy queue. # Candidates are source packages in the origin suite, and optionally in its policy queue.
...@@ -177,7 +178,7 @@ class SuiteUpdater(object): ...@@ -177,7 +178,7 @@ class SuiteUpdater(object):
params = {'origin': self.origin.suite_id, 'target': self.target.suite_id} params = {'origin': self.origin.suite_id, 'target': self.target.suite_id}
return self.transaction.session.query(DBSource).from_statement(query).params(params) return self.transaction.session.query(DBSource).from_statement(sql.text(query)).params(params)
def _components_for_binary(self, binary, suite): def _components_for_binary(self, binary, suite):
session = self.transaction.session session = self.transaction.session
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册