diff options
author | Alex Grönholm <alex.gronholm@nextday.fi> | 2022-09-12 22:48:45 +0300 |
---|---|---|
committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2022-09-12 22:48:45 +0300 |
commit | 49344e6954559259beb336436a45698d62eed5b4 (patch) | |
tree | 8c0e42e95f9846b9bf1c854f1bd94e10de35f9e9 | |
parent | 9b72c6171741fc9492c0a468d40829c8118e61b0 (diff) | |
download | apscheduler-49344e6954559259beb336436a45698d62eed5b4.tar.gz |
Fixed schema parameter in SQLAlchemyJobStore not being used
Fixes #664.
-rw-r--r-- | docs/versionhistory.rst | 4 | ||||
-rw-r--r-- | src/apscheduler/datastores/sqlalchemy.py | 13 | ||||
-rw-r--r-- | tests/test_datastores.py | 2 |
3 files changed, 12 insertions, 7 deletions
diff --git a/docs/versionhistory.rst b/docs/versionhistory.rst index 1e0c332..efe69fd 100644 --- a/docs/versionhistory.rst +++ b/docs/versionhistory.rst @@ -4,6 +4,10 @@ Version history To find out how to migrate your application from a previous version of APScheduler, see the :doc:`migration section <migration>`. +**UNRELEASED** + +- Fixed the ``schema`` parameter in ``SQLAlchemyDataStore`` not being applied + **4.0.0a2** - **BREAKING** Changed the scheduler API to always require a call to either diff --git a/src/apscheduler/datastores/sqlalchemy.py b/src/apscheduler/datastores/sqlalchemy.py index 9c7c905..ebb076f 100644 --- a/src/apscheduler/datastores/sqlalchemy.py +++ b/src/apscheduler/datastores/sqlalchemy.py @@ -100,12 +100,13 @@ class _BaseSQLAlchemyDataStore: def __attrs_post_init__(self) -> None: # Generate the table definitions + prefix = f"{self.schema}." if self.schema else "" self._metadata = self.get_table_definitions() - self.t_metadata = self._metadata.tables["metadata"] - self.t_tasks = self._metadata.tables["tasks"] - self.t_schedules = self._metadata.tables["schedules"] - self.t_jobs = self._metadata.tables["jobs"] - self.t_job_results = self._metadata.tables["job_results"] + self.t_metadata = self._metadata.tables[prefix + "metadata"] + self.t_tasks = self._metadata.tables[prefix + "tasks"] + self.t_schedules = self._metadata.tables[prefix + "schedules"] + self.t_jobs = self._metadata.tables[prefix + "jobs"] + self.t_job_results = self._metadata.tables[prefix + "job_results"] # Find out if the dialect supports UPDATE...RETURNING update = self.t_jobs.update().returning(self.t_jobs.c.id) @@ -137,7 +138,7 @@ class _BaseSQLAlchemyDataStore: interval_type = EmulatedInterval tags_type = JSON - metadata = MetaData() + metadata = MetaData(schema=self.schema) Table("metadata", metadata, Column("schema_version", Integer, nullable=False)) Table( "tasks", diff --git a/tests/test_datastores.py b/tests/test_datastores.py index 658a0f3..9c9a0cf 100644 --- a/tests/test_datastores.py +++ b/tests/test_datastores.py @@ -81,7 +81,7 @@ def psycopg2_store() -> DataStore: engine = create_engine("postgresql+psycopg2://postgres:secret@localhost/testdb") try: - yield SQLAlchemyDataStore(engine, start_from_scratch=True) + yield SQLAlchemyDataStore(engine, schema="alter", start_from_scratch=True) finally: engine.dispose() |