Source code for chemicalchecker.util.psql.psql

"""Basic connection and query fuctions for PostgreSQL."""
try:
    import psycopg2
except ImportError:
    raise ImportError("requires psycopg2 " +
                      "http://initd.org/psycopg/")

from chemicalchecker.util import Config


[docs]def get_connection(dbname=None): """Return the connection to a PSQL DB. Args: dbname (str):The name of DB to connect. If none, the name from config file is used. Returns: connection """ config = Config() conn_dict = config.DB.asdict() conn_dict.pop('dialect', None) conn_dict.pop('calcdata_dbname', None) conn_dict.pop('uniprot_db_version', None) conn_dict.update({"database": dbname}) datab = psycopg2.connect(**conn_dict) return datab
[docs]def qstring(query, dbname): """Method to query a PSQL DB. Args: dbname (str):The name of DB to connect. If none, the name from config file is used. Returns: rows: the data queried in row format """ con = get_connection(dbname=dbname) con.set_isolation_level(0) cur = con.cursor() cur.execute(query) rows = cur.fetchall() con.close() return rows
[docs]def qstring_cur(query, dbname): """Method to query a PSQL DB. Args: dbname (str):The name of DB to connect. If none, the name from config file is used. Returns: rows: the data queried in row format """ con = get_connection(dbname=dbname) con.set_isolation_level(0) cur = con.cursor() cur.execute(query) return cur
[docs]def query(query, dbname): """Method to query a PSQL database which returns data. Args: dbname (str):The name of DB to connect. If none, the name from config file is used. """ con = get_connection(dbname=dbname) con.set_isolation_level(0) cur = con.cursor() cur.execute(query) con.close()