in redash/query_runner/vertica.py [0:0]
def run_query(self, query, user):
import vertica_python
if query == "":
json_data = None
error = "Query is empty"
return json_data, error
connection = None
try:
conn_info = {
"host": self.configuration.get("host", ""),
"port": self.configuration.get("port", 5433),
"user": self.configuration.get("user", ""),
"password": self.configuration.get("password", ""),
"database": self.configuration.get("database", ""),
"read_timeout": self.configuration.get("read_timeout", 600),
}
if self.configuration.get("connection_timeout"):
conn_info["connection_timeout"] = self.configuration.get(
"connection_timeout"
)
connection = vertica_python.connect(**conn_info)
cursor = connection.cursor()
logger.debug("Vertica running query: %s", query)
cursor.execute(query)
if cursor.description is not None:
columns_data = [
(i[0], types_map.get(i[1], None)) for i in cursor.description
]
columns = self.fetch_columns(columns_data)
rows = [
dict(zip(([c["name"] for c in columns]), r))
for r in cursor.fetchall()
]
data = {"columns": columns, "rows": rows}
json_data = json_dumps(data)
error = None
else:
json_data = None
error = "No data was returned."
cursor.close()
finally:
if connection:
connection.close()
return json_data, error