Move imports in sql component (#27713)

* move imports in sql component

* fix: variable redeclaration

* fix: close test db session on platform setup
This commit is contained in:
Michał Mrozek 2019-10-20 10:10:27 +02:00 committed by Fabian Affolter
parent 9571f869d1
commit ed46834a30
2 changed files with 11 additions and 10 deletions

View file

@ -1,13 +1,15 @@
"""Sensor from an SQL Query.""" """Sensor from an SQL Query."""
import decimal
import datetime import datetime
import decimal
import logging import logging
import sqlalchemy
from sqlalchemy.orm import scoped_session, sessionmaker
import voluptuous as vol import voluptuous as vol
from homeassistant.components.recorder import CONF_DB_URL, DEFAULT_DB_FILE, DEFAULT_URL
from homeassistant.components.sensor import PLATFORM_SCHEMA from homeassistant.components.sensor import PLATFORM_SCHEMA
from homeassistant.const import CONF_NAME, CONF_UNIT_OF_MEASUREMENT, CONF_VALUE_TEMPLATE from homeassistant.const import CONF_NAME, CONF_UNIT_OF_MEASUREMENT, CONF_VALUE_TEMPLATE
from homeassistant.components.recorder import CONF_DB_URL, DEFAULT_URL, DEFAULT_DB_FILE
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity import Entity
@ -46,20 +48,19 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
if not db_url: if not db_url:
db_url = DEFAULT_URL.format(hass_config_path=hass.config.path(DEFAULT_DB_FILE)) db_url = DEFAULT_URL.format(hass_config_path=hass.config.path(DEFAULT_DB_FILE))
import sqlalchemy
from sqlalchemy.orm import sessionmaker, scoped_session
try: try:
engine = sqlalchemy.create_engine(db_url) engine = sqlalchemy.create_engine(db_url)
sessionmaker = scoped_session(sessionmaker(bind=engine)) sessmaker = scoped_session(sessionmaker(bind=engine))
# Run a dummy query just to test the db_url # Run a dummy query just to test the db_url
sess = sessionmaker() sess = sessmaker()
sess.execute("SELECT 1;") sess.execute("SELECT 1;")
except sqlalchemy.exc.SQLAlchemyError as err: except sqlalchemy.exc.SQLAlchemyError as err:
_LOGGER.error("Couldn't connect using %s DB_URL: %s", db_url, err) _LOGGER.error("Couldn't connect using %s DB_URL: %s", db_url, err)
return return
finally:
sess.close()
queries = [] queries = []
@ -74,7 +75,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
value_template.hass = hass value_template.hass = hass
sensor = SQLSensor( sensor = SQLSensor(
name, sessionmaker, query_str, column_name, unit, value_template name, sessmaker, query_str, column_name, unit, value_template
) )
queries.append(sensor) queries.append(sensor)
@ -120,7 +121,6 @@ class SQLSensor(Entity):
def update(self): def update(self):
"""Retrieve sensor data from the query.""" """Retrieve sensor data from the query."""
import sqlalchemy
try: try:
sess = self.sessionmaker() sess = self.sessionmaker()

View file

@ -1,11 +1,12 @@
"""The test for the sql sensor platform.""" """The test for the sql sensor platform."""
import unittest import unittest
import pytest import pytest
import voluptuous as vol import voluptuous as vol
from homeassistant.components.sql.sensor import validate_sql_select from homeassistant.components.sql.sensor import validate_sql_select
from homeassistant.setup import setup_component
from homeassistant.const import STATE_UNKNOWN from homeassistant.const import STATE_UNKNOWN
from homeassistant.setup import setup_component
from tests.common import get_test_home_assistant from tests.common import get_test_home_assistant