From 18bdc70185cd9751a0a2bdf83729ea0c717897c2 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 11 May 2022 22:45:47 -0500 Subject: [PATCH] Update sql to prepare for sqlalchemy 2.0 (#71532) * Update sql to prepare for sqlalchemy 2.0 * config flow as well --- homeassistant/components/sql/config_flow.py | 6 +++--- homeassistant/components/sql/sensor.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/sql/config_flow.py b/homeassistant/components/sql/config_flow.py index ba9a5f7e4dd..9a6013e1d62 100644 --- a/homeassistant/components/sql/config_flow.py +++ b/homeassistant/components/sql/config_flow.py @@ -45,15 +45,15 @@ def validate_sql_select(value: str) -> str | None: def validate_query(db_url: str, query: str, column: str) -> bool: """Validate SQL query.""" try: - engine = sqlalchemy.create_engine(db_url) - sessmaker = scoped_session(sessionmaker(bind=engine)) + engine = sqlalchemy.create_engine(db_url, future=True) + sessmaker = scoped_session(sessionmaker(bind=engine, future=True)) except SQLAlchemyError as error: raise error sess: scoped_session = sessmaker() try: - result: Result = sess.execute(query) + result: Result = sess.execute(sqlalchemy.text(query)) for res in result.mappings(): data = res[column] _LOGGER.debug("Return value from query: %s", data) diff --git a/homeassistant/components/sql/sensor.py b/homeassistant/components/sql/sensor.py index 5e748bed55e..4e3f9d15846 100644 --- a/homeassistant/components/sql/sensor.py +++ b/homeassistant/components/sql/sensor.py @@ -111,8 +111,8 @@ async def async_setup_entry( value_template.hass = hass try: - engine = sqlalchemy.create_engine(db_url) - sessmaker = scoped_session(sessionmaker(bind=engine)) + engine = sqlalchemy.create_engine(db_url, future=True) + sessmaker = scoped_session(sessionmaker(bind=engine, future=True)) except SQLAlchemyError as err: _LOGGER.error("Can not open database %s", {redact_credentials(str(err))}) return @@ -179,7 +179,7 @@ class SQLSensor(SensorEntity): self._attr_extra_state_attributes = {} sess: scoped_session = self.sessionmaker() try: - result = sess.execute(self._query) + result = sess.execute(sqlalchemy.text(self._query)) except SQLAlchemyError as err: _LOGGER.error( "Error executing query %s: %s",