API Reference
Client
- class timescale_access.client.TimescaleAccess(db_url)[source]
Bases:
objectConvenience wrapper around database operations using SQLAlchemy.
- Parameters:
db_url (str)
- check_connection()[source]
Test whether a connection to the database can be established.
- Returns:
True if the connection check succeeds, False otherwise.
- Return type:
bool
- dispose_connection()[source]
Explicitly dispose the underlying SQLAlchemy engine and free resources.
- Return type:
None
- drop_table(schema_name, table_name)[source]
Drop a table in the given schema.
- Parameters:
schema_name (str) – Schema name.
table_name (str) – Name of the table to drop.
- Return type:
None
- ensure_schema_exists(schema_name)[source]
Create the given schema if it does not already exist.
- Parameters:
schema_name (str) – Name of the schema to ensure.
- Return type:
None
- get_active_connections()[source]
Return information about active database connections.
- Returns:
List of active connections with database name, user and client IP.
- Return type:
List[dict]
- get_column_names(schema_name, table_name)[source]
Return all column names for a given table.
- Parameters:
schema_name (str) – Schema name.
table_name (str) – Table name.
- Returns:
List of column names.
- Return type:
List[str]
- get_databases()[source]
Return all non-template databases in the PostgreSQL instance.
- Returns:
List of database names.
- Return type:
List[str]
- get_distinct_values(schema_name, table_name, column_name)[source]
Return all distinct values of a column in a table.
- Parameters:
schema_name (str) – Schema name.
table_name (str) – Table name.
column_name (str) – Column name.
- Returns:
List of distinct values in the column.
- Return type:
List[str]
- get_duplicate_rows(schema_name, table_name)[source]
Return all duplicate rows where
(instrument_name, trade_seq)occurs multiple times.- Parameters:
schema_name (str) – Schema name.
table_name (str) – Table name.
- Returns:
DataFrame containing all duplicate rows.
- Return type:
pd.DataFrame
- get_existing_timestamps(schema_name, table_name, column='timestamp')[source]
Return a sorted list of distinct timestamps from a specific column.
- Parameters:
schema_name (str) – Schema name.
table_name (str) – Table name.
column (str, optional) – Column name to query (default:
"timestamp").
- Returns:
Sorted list of timestamps.
- Return type:
List[datetime]
- get_hypertable_size(schema_name, table_name)[source]
Return the total size of a TimescaleDB hypertable as a formatted string (for example
"123 MB").The implementation: 1. Retrieves the internal hypertable ID from
_timescaledb_catalog.hypertable. 2. Summarizes the size of all chunks in_timescaledb_internal.- Parameters:
schema_name (str) – Schema name of the hypertable (for example
"raw_data").table_name (str) – Hypertable name (for example
"btc_weekly").
- Returns:
Total size formatted by
pg_size_pretty(for example"512 MB","3 GB").- Return type:
str
- Raises:
ValueError – If the hypertable cannot be found.
- get_indexes(schema_name, table_name)[source]
Return all indexes for a given table.
- Parameters:
schema_name (str) – Schema name.
table_name (str) – Table name.
- Returns:
List of index metadata dictionaries.
- Return type:
List[dict]
- get_missing_trade_seq(schema_name, table_name)[source]
Return all expected but missing
trade_seqvalues perinstrument_name.- Parameters:
schema_name (str) – Schema name.
table_name (str) – Table name.
- Returns:
Rows describing missing sequence values per instrument.
- Return type:
pd.DataFrame
- get_nonconsecutive_trade_seq(schema_name, table_name)[source]
Return all
trade_seqrows where the sequence is not consecutive.- Parameters:
schema_name (str) – Schema name.
table_name (str) – Table name.
- Returns:
Rows with gaps in
trade_seqper instrument.- Return type:
pd.DataFrame
- get_null_summary(schema_name, table_name)[source]
Create (if necessary) and invoke a function that summarizes NULL values in a table.
The created function is named according to the pattern:
check_nulls_in_{schema_name}_{table_name}.- Parameters:
schema_name (str) – Schema name.
table_name (str) – Table name.
- Returns:
Summary of NULL counts per column and instrument name.
- Return type:
pd.DataFrame
- get_role_memberships()[source]
Return all role memberships in the database.
- Returns:
List of mappings from member to role.
- Return type:
List[dict]
- get_roles()[source]
Return all roles and their privileges.
- Returns:
List of role metadata, including superuser and createdb flags.
- Return type:
List[dict]
- get_row_count(schema_name, table_name)[source]
Return the number of rows in a table.
- Parameters:
schema_name (str) – Schema name (for example
"raw_data").table_name (str) – Table name (for example
"btc_weekly").
- Returns:
Number of rows in the table.
- Return type:
int
- get_schemas()[source]
Return a list of all user-defined schemas.
- Returns:
List of schema names.
- Return type:
List[str]
- get_table(schema_name, table_name, filters=None)[source]
Load a table as a pandas DataFrame with optional filters.
- Parameters:
schema_name (str) – Schema name.
table_name (str) – Table name.
filters (Optional[Dict[str, Any]], optional) –
Filter specification for the WHERE clause. .. rubric:: Examples
Single/multiple values:
{"instrument_name": ["BTC-14MAR25", "ETH-14MAR25"]}Range filter:
{"trade_seq": {"between": (100, 200)}}
- Returns:
Filtered table contents.
- Return type:
pd.DataFrame
- get_table_names(schema_name)[source]
Return all table names in the given schema.
- Parameters:
schema_name (str) – Schema name.
- Returns:
List of table names.
- Return type:
List[str]
- insert_hypertable(schema_name, table_name, df, index=False, chunksize=500, time_column='timestamp')[source]
Insert a pandas DataFrame into a TimescaleDB hypertable.
This method is tailored to time-series data. If the target table does not exist, it is automatically created as a TimescaleDB hypertable. The time column is set to
"timestamp"by default.- Parameters:
schema_name (str) – Name of the target schema.
table_name (str) – Name of the target table.
df (pd.DataFrame) – DataFrame to insert. Must contain a time column.
index (bool, optional) – Whether to persist the pandas index (default: False).
chunksize (int, optional) – Number of rows per batch insert (default: 500).
time_column (str, optional) – Name of the time column in the DataFrame (default:
"timestamp").
- Raises:
ValueError – If the given time column is not present in
df.RuntimeError – If insertion or hypertable creation fails.
- Return type:
None
- insert_hypertable_on_conflict(schema_name, table_name, df, time_column='timestamp')[source]
Insert a DataFrame into a TimescaleDB hypertable and avoid duplicates via
ON CONFLICT.The function creates the table and columns as needed and ensures a UNIQUE index on
(instrument_name, trade_seq, timestamp). All index columns must be present in the DataFrame.- Parameters:
schema_name (str) – Target schema.
table_name (str) – Target table name.
df (pd.DataFrame) – Data to insert.
time_column (str) – Name of the time column used by TimescaleDB.
- Return type:
None
Low-level modules
- timescale_access.engine.check_connection(engine)[source]
Test whether a connection to the database can be established.
- Parameters:
engine (Engine) – SQLAlchemy engine to test.
- Returns:
True if the connection test succeeds, False otherwise.
- Return type:
bool
- timescale_access.engine.get_engine(db_url)[source]
Create a SQLAlchemy Engine for the given database URL.
- Parameters:
db_url (str) – Database URL.
- Returns:
SQLAlchemy engine instance used for database connections.
- Return type:
Engine
- timescale_access.read.get_active_connections(engine)[source]
Return information about active database connections.
- Parameters:
engine (Engine) – SQLAlchemy engine.
- Returns:
List of active connections with database name, user and client IP.
- Return type:
List[dict]
- timescale_access.read.get_column_names(engine, schema_name, table_name)[source]
Return all column names of a given table.
- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Schema name.
table_name (str) – Table name.
- Returns:
List of column names.
- Return type:
List[str]
- timescale_access.read.get_databases(engine)[source]
Return all non-template databases in the PostgreSQL instance.
- Parameters:
engine (Engine) – SQLAlchemy engine.
- Returns:
List of database names.
- Return type:
List[str]
- timescale_access.read.get_distinct_values(engine, schema_name, table_name, column_name)[source]
Return all distinct, non-null values of a column in a table.
- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Schema name.
table_name (str) – Table name.
column_name (str) – Column name.
- Returns:
List of distinct values in the column.
- Return type:
List[str]
- timescale_access.read.get_existing_timestamps(engine, schema_name, table_name, column)[source]
Return a sorted list of distinct timestamps from a given column.
- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Schema name.
table_name (str) – Table name.
column (str) – Column name.
- Returns:
Sorted list of timestamps.
- Return type:
List[datetime]
- timescale_access.read.get_indexes(engine, schema_name, table_name)[source]
Return index information for a given table.
- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Schema name.
table_name (str) – Table name.
- Returns:
List of index metadata dictionaries.
- Return type:
List[dict]
- timescale_access.read.get_role_memberships(engine)[source]
Return all role memberships in the database.
- Parameters:
engine (Engine) – SQLAlchemy engine.
- Returns:
List of mappings from member to role.
- Return type:
List[dict]
- timescale_access.read.get_roles(engine)[source]
Return all roles and their basic privileges.
- Parameters:
engine (Engine) – SQLAlchemy engine.
- Returns:
List of dictionaries with role metadata.
- Return type:
List[dict]
- timescale_access.read.get_schemas(engine)[source]
Return a list of user-defined schemas, excluding system and TimescaleDB internals.
- Parameters:
engine (Engine) – SQLAlchemy engine.
- Returns:
List of schema names.
- Return type:
List[str]
- timescale_access.read.get_table(engine, schema_name, table_name, filters=None)[source]
Load a table as a pandas DataFrame with optional filter conditions.
- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Schema name.
table_name (str) – Table name.
filters (Optional[Dict[str, Union[Any, Dict[str, Any]]]], optional) –
Filter specification for the WHERE clause.
Examples
Single/multiple values:
{"instrument_name": ["BTC-14MAR25", "ETH-14MAR25"]}Range filter:
{"trade_seq": {"between": (100, 200)}}
- Returns:
Filtered table.
- Return type:
pd.DataFrame
- timescale_access.read.get_table_names(engine, schema_name)[source]
Return all table names in a given schema.
- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Schema name.
- Returns:
List of table names.
- Return type:
List[str]
- timescale_access.write.drop_table(engine, schema_name, table_name)[source]
Drop a table in the given schema.
- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Schema name.
table_name (str) – Target table name.
- Return type:
None
- timescale_access.write.ensure_schema_exists(engine, schema_name)[source]
Create the given schema if it does not already exist.
- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Schema name to ensure.
- Return type:
None
- timescale_access.write.insert_hypertable(engine, schema_name, table_name, df, index=False, chunksize=1000, time_column='timestamp')[source]
Insert a pandas DataFrame into a TimescaleDB hypertable.
The table and its columns are created automatically if they do not exist yet.
- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Target schema name.
table_name (str) – Target table name.
df (pd.DataFrame) – Data to insert.
index (bool) – Whether to persist the DataFrame index.
chunksize (int) – Batch size for inserts.
time_column (str) – Name of the time column.
- Return type:
None
- timescale_access.analysis.get_duplicate_rows(engine, schema_name, table_name)[source]
Return all rows where the combination (instrument_name, trade_seq) occurs multiple times.
- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Schema name.
table_name (str) – Table name.
- Returns:
DataFrame containing all duplicate rows.
- Return type:
pd.DataFrame
- timescale_access.analysis.get_hypertable_size(engine, schema_name, table_name)[source]
Return the total size of a TimescaleDB hypertable as a formatted string (for example
"123 MB").The implementation: 1. Retrieves the internal hypertable ID from
_timescaledb_catalog.hypertable. 2. Summarizes the size of all chunks in_timescaledb_internal.- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Schema name, e.g.
"raw_data".table_name (str) – Hypertable name, e.g.
"btc_weekly".
- Returns:
Total formatted size (for example
"512 MB","3 GB").- Return type:
str
- Raises:
ValueError – If the hypertable cannot be found.
- timescale_access.analysis.get_missing_trade_seq(engine, schema_name, table_name)[source]
Return all expected but missing
trade_seqvalues perinstrument_name.- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Schema name.
table_name (str) – Table name.
- Returns:
Missing sequence values per instrument.
- Return type:
pd.DataFrame
- timescale_access.analysis.get_nonconsecutive_trade_seq(engine, schema_name, table_name)[source]
Return all
trade_seqrows where the sequence is not consecutive.- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Schema name.
table_name (str) – Table name.
- Returns:
Rows with gaps in
trade_seqper instrument.- Return type:
pd.DataFrame
- timescale_access.analysis.get_null_summary(engine, schema_name, table_name)[source]
Create (if necessary) and call a function that summarizes NULL values for any table in a schema.
The function name is generated using the pattern:
check_nulls_in_{schema_name}_{table_name}.- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Schema name.
table_name (str) – Table name.
- Returns:
Summary of NULL counts per column and instrument name.
- Return type:
pd.DataFrame
- timescale_access.analysis.get_row_count(engine, schema_name, table_name)[source]
Return the number of rows in a table.
- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Schema name (for example
"raw_data").table_name (str) – Table name (for example
"btc_weekly").
- Returns:
Number of rows in the table.
- Return type:
int
- timescale_access.analysis.insert_hypertable_on_conflict(engine, schema_name, table_name, df, time_column)[source]
Insert a DataFrame into a TimescaleDB hypertable and avoid duplicates via
ON CONFLICT.The function creates the table and columns as needed and ensures a UNIQUE index on
(instrument_name, trade_seq, timestamp). All index columns must be present as columns in the DataFrame.- Parameters:
engine (Engine) – SQLAlchemy engine.
schema_name (str) – Target schema.
table_name (str) – Target table name.
df (pd.DataFrame) – Data to insert.
time_column (str) – Time column for TimescaleDB.
- Return type:
None