Skip to content

Select_values example in the wiki causes a crash #118

@nsjarvis

Description

@nsjarvis

I tried this code, copied from the wiki with rcdb changed to rcdb2:

# import RCDB
from rcdb.provider import RCDBProvider

# connect to DB
db = RCDBProvider("mysql://rcdb@hallddb.jlab.org/rcdb2")

# select values with query
table = db.select_values(['polarization_angle','beam_current'], "@is_production", run_min=30000, run_max=30050)

It gives this error message:

Traceback (most recent call last):
  File "/usr/lib64/python3.9/site-packages/sqlalchemy/engine/base.py", line 1800, in _execute_context
    context = constructor(
  File "/usr/lib64/python3.9/site-packages/sqlalchemy/engine/default.py", line 1001, in _init_compiled
    self.compiled_parameters = [
  File "/usr/lib64/python3.9/site-packages/sqlalchemy/engine/default.py", line 1002, in <listcomp>
    compiled.construct_params(
  File "/usr/lib64/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 1024, in construct_params
    raise exc.InvalidRequestError(
sqlalchemy.exc.InvalidRequestError: A value is required for bind parameter 'run_min' (Background on this error at: https://sqlalche.me/e/14/cd3x)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/w/halld-scshelf2101/njarvis/gluex23/epics3/test.py", line 9, in <module>
    table = db.select_values(['polarization_angle','beam_current'], "@is_production", run_min=30000, run_max=30050)
  File "/group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0/rcdb/rcdb_0.09.01/python/rcdb/provider.py", line 1004, in select_values
    result = self.session.connection().execute(sql, parameters={"run_min": run_min, "run_max":run_max})
  File "/usr/lib64/python3.9/site-packages/sqlalchemy/engine/base.py", line 1380, in execute
    return meth(self, multiparams, params, _EMPTY_EXECUTION_OPTS)
  File "/usr/lib64/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/lib64/python3.9/site-packages/sqlalchemy/engine/base.py", line 1572, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/lib64/python3.9/site-packages/sqlalchemy/engine/base.py", line 1806, in _execute_context
    self._handle_dbapi_exception(
  File "/usr/lib64/python3.9/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
    util.raise_(
  File "/usr/lib64/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    raise exception
  File "/usr/lib64/python3.9/site-packages/sqlalchemy/engine/base.py", line 1800, in _execute_context
    context = constructor(
  File "/usr/lib64/python3.9/site-packages/sqlalchemy/engine/default.py", line 1001, in _init_compiled
    self.compiled_parameters = [
  File "/usr/lib64/python3.9/site-packages/sqlalchemy/engine/default.py", line 1002, in <listcomp>
    compiled.construct_params(
  File "/usr/lib64/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 1024, in construct_params
    raise exc.InvalidRequestError(
sqlalchemy.exc.StatementError: (sqlalchemy.exc.InvalidRequestError) A value is required for bind parameter 'run_min'
[SQL: SELECT  runs.number run
  ,run_type_table.text_value run_type
  ,beam_current_table.float_value beam_current
  ,event_count_table.int_value event_count
  ,solenoid_current_table.float_value solenoid_current
  ,collimator_diameter_table.text_value collimator_diameter
  ,polarization_angle_table.float_value polarization_angle

 FROM runs 
  LEFT JOIN conditions run_type_table   ON run_type_table.run_number = runs.number AND run_type_table.condition_type_id = 3
  LEFT JOIN conditions beam_current_table   ON beam_current_table.run_number = runs.number AND beam_current_table.condition_type_id = 17
  LEFT JOIN conditions event_count_table   ON event_count_table.run_number = runs.number AND event_count_table.condition_type_id = 2
  LEFT JOIN conditions solenoid_current_table   ON solenoid_current_table.run_number = runs.number AND solenoid_current_table.condition_type_id = 11
  LEFT JOIN conditions collimator_diameter_table   ON collimator_diameter_table.run_number = runs.number AND collimator_diameter_table.condition_type_id = 19
  LEFT JOIN conditions polarization_angle_table   ON polarization_angle_table.run_number = runs.number AND polarization_angle_table.condition_type_id = 56

 WHERE runs.number >= %s AND runs.number <=%s
ORDER BY runs.number]
[parameters: [{'parameters': {'run_min': 30000, 'run_max': 30050}}]]
(Background on this error at: https://sqlalche.me/e/14/cd3x)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions