I want to create TimescaleDB tables in Postgres on the fly as I'm dealing with data sources that change (financial feeds, so could be 100, could be 1000) over time and I want one table per data source.
I can create the tables no problem from Python, but when I call SELECT create_hypertable(test_table1, time)
it throws an error. The same query seems to work fine when executed from pSQL of course, so it looks like the timescale API isn't available via psycopg2 perhaps?
Environment:
- Python 3.6.4
- psycopg2-binary-2.7.4 (installed with the flag: --no-binary :all:)
- Postgres: 10.3
- Timescaledb: 0.8.0-2
- MacOS: 10.13.3
Test Code:
db.query("CREATE TABLE test_table1 (time TIMESTAMP NOT NULL, name CHAR(100) NOT NULL")
db.query("SELECT create_hypertable('test_table1', 'time')")
Error:
2018-03-05 11:45:36,901 [MainThread ] [ERROR] function create_hypertable(unknown, unknown) does not exist
LINE 1: SELECT create_hypertable('temp_table1', 'time')
. . . . . . . . . . . . . . ^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Does anyone know if there currently anyway to making this work? Have I missed something simple? Or is there another service that can replace timescale functionality that supports being dynamically created?
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
on the database when I created it following the installation steps - but because I have a reset script that drops all the tables and creates them again - I have to runCREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
again to connect the extension again. So when I had it working in pSQL, it was before I ran the reset script and of course, when I tried from Python, it was after. – Krugersdorp