Default to recorder db for SQL integration (#85436)
Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
parent
2f4e9c8ef3
commit
afa58b80bd
9 changed files with 120 additions and 54 deletions
|
@ -10,7 +10,7 @@ from sqlalchemy.engine import Result
|
|||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from sqlalchemy.orm import Session, scoped_session, sessionmaker
|
||||
|
||||
from homeassistant.components.recorder import CONF_DB_URL, DEFAULT_DB_FILE, DEFAULT_URL
|
||||
from homeassistant.components.recorder import CONF_DB_URL
|
||||
from homeassistant.components.sensor import (
|
||||
CONF_STATE_CLASS,
|
||||
SensorDeviceClass,
|
||||
|
@ -34,6 +34,7 @@ from homeassistant.helpers.template import Template
|
|||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||
|
||||
from .const import CONF_COLUMN_NAME, CONF_QUERY, DB_URL_RE, DOMAIN
|
||||
from .util import resolve_db_url
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
@ -59,7 +60,7 @@ async def async_setup_platform(
|
|||
value_template: Template | None = conf.get(CONF_VALUE_TEMPLATE)
|
||||
column_name: str = conf[CONF_COLUMN_NAME]
|
||||
unique_id: str | None = conf.get(CONF_UNIQUE_ID)
|
||||
db_url: str | None = conf.get(CONF_DB_URL)
|
||||
db_url: str = resolve_db_url(hass, conf.get(CONF_DB_URL))
|
||||
device_class: SensorDeviceClass | None = conf.get(CONF_DEVICE_CLASS)
|
||||
state_class: SensorStateClass | None = conf.get(CONF_STATE_CLASS)
|
||||
|
||||
|
@ -87,7 +88,7 @@ async def async_setup_entry(
|
|||
) -> None:
|
||||
"""Set up the SQL sensor from config entry."""
|
||||
|
||||
db_url: str = entry.options[CONF_DB_URL]
|
||||
db_url: str = resolve_db_url(hass, entry.options.get(CONF_DB_URL))
|
||||
name: str = entry.options[CONF_NAME]
|
||||
query_str: str = entry.options[CONF_QUERY]
|
||||
unit: str | None = entry.options.get(CONF_UNIT_OF_MEASUREMENT)
|
||||
|
@ -128,7 +129,7 @@ async def async_setup_sensor(
|
|||
unit: str | None,
|
||||
value_template: Template | None,
|
||||
unique_id: str | None,
|
||||
db_url: str | None,
|
||||
db_url: str,
|
||||
yaml: bool,
|
||||
device_class: SensorDeviceClass | None,
|
||||
state_class: SensorStateClass | None,
|
||||
|
@ -136,16 +137,12 @@ async def async_setup_sensor(
|
|||
) -> None:
|
||||
"""Set up the SQL sensor."""
|
||||
|
||||
if not db_url:
|
||||
db_url = DEFAULT_URL.format(hass_config_path=hass.config.path(DEFAULT_DB_FILE))
|
||||
|
||||
sess: Session | None = None
|
||||
try:
|
||||
engine = sqlalchemy.create_engine(db_url, future=True)
|
||||
sessmaker = scoped_session(sessionmaker(bind=engine, future=True))
|
||||
|
||||
# Run a dummy query just to test the db_url
|
||||
sess = sessmaker()
|
||||
sess: Session = sessmaker()
|
||||
sess.execute(sqlalchemy.text("SELECT 1;"))
|
||||
|
||||
except SQLAlchemyError as err:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue