The query for clickhouse data from python in json format returned an object. How to get data from this object.
The query is directly working in clickhouse-client
connections and query are given below:
QUERY:
def getdata(self):
engine, session = ConnectClickHouse().get_connection()
result = engine.execute(sqlalchemy.DDL(f"SELECT * FROM rate FORMAT JSON;"))
Gives Response:
<sqlalchemy.engine.result.ResultProxy object at 0x7f8104679df0>
How to extract data from this object? The query is working in clickhouse terminaland gives correct response.
Settings
DEFAULTS = {
"HOST": "127.0.0.1",
"PORT": "8123",
"DATABASE": "clickh",
"USERNAME": "",
"PASSWORD": "",
"PROTOCOL": "http",
"SESSION_URL": "",
"YANDEX_CERT_PATH": "",
"BULK_INSERT_LIMIT": 9999,
}
class ConnectClickHouse:
def create_connection(self):
config = {
"username": settings.USERNAME,
"password": settings.PASSWORD,
"host": settings.HOST,
"port": settings.PORT,
"protocol": settings.PROTOCOL,
"database": settings.DATABASE
}
connection_string = "clickhouse://{username}:{password}@{host}:{port}/{database}?protocol={protocol}".format(
**config
)
engine = create_engine(connection_string, echo=False)
session = make_session(engine)
CLICKHOUSE_CLIENT = (engine, session)
metadata = MetaData(bind=engine)
return (engine,session)
@classmethod
def get_connection(cls):
if CLICKHOUSE_CLIENT:
return CLICKHOUSE_CLIENT
return cls().create_connection()