Skip to main content
Version: 2.3.2

Python

With the release of the new version of the distribution, attentive friends will have noticed that CnosDB 2.0 has fully supported Python. cnos-connector enables the connection between CnosDB 2.0 and Python by calling the connector cnos-connector. cnos-connector encapsulates the requests to CnosDB, making it simpler and easier to use CnosDB in Python. It makes using CnosDB in Python environment more concise and easy to use. At the same time, cnos-connector provides a PEP 249 compliant programming interface, which makes it easier to interact with SQLAlchemy and pandas.

cnos-connector is fully open source and the source code is located on GitHub.

Installation

Download and install cnos-connector using pip, which requires Python version greater than or equal to 3.6

pip install cnos-connector

Usage Examples

Query example

  • Query by SQL

    from cnosdb_connector import connect

    conn = connect(url="http://127.0.0.1:8902/", user="root", password="")
    resp = conn.execute("SHOW DATABASES")
    print(resp)
  • Query by function defined by the interface

    from cnosdb_connector import connect

    conn = connect(url="http://127.0.0.1:8902/", user="root", password="")
    conn.create_database("air")
    resp = conn.list_database()
    print(resp)
  • Search through PEP-249, for more information, please refer to PEP-249.

    from cnosdb_connector import connect

    conn = connect(url="http://127.0.0.1:8902/", user="root", password="")
    cursor = conn.cursor()

    cursor.execute("SHOW DATABASES")
    resp = cursor.fetchall()
    print(resp)
  • Querying via pandas, which supports the PEP-249 specification

    import pandas as pd
    from cnosdb_connector import connect

    conn = connect(url="http://127.0.0.1:8902/", user="root", password="")

    resp = pd.read_sql("SHOW DATABASES", conn)
    print(resp)

Writing example

  • supports the Line Protocol method for writing data.

    from cnosdb_connector import connect

    line0 = "air,station=XiaoMaiDao temperature=56,pressure=77 1666165200290401000"
    line1 = "air,station=XiaoMaiDao temperature=72,pressure=71 1666165300290401000"
    line2 = "air,station=XiaoMaiDao temperature=46,pressure=67 1666165400290401000"

    conn = connect(url="http://127.0.0.1:8902/", user="root", password="")

    conn.create_database_with_ttl("ocean")
    conn.switch_database("ocean")

    conn.write_lines([line0, line1, line2])

    resp = conn.execute("SELECT * FROM ocean;")
    print(resp)
  • Support SQL for writing

    from cnosdb_connector import connect

    conn = connect(url="http://127.0.0.1:8902/", user="root", password="")

    query = "INSERT INTO air (TIME, station, visibility, temperature, pressure) VALUES
    (1666165200290401000, 'XiaoMaiDao', 56, 69, 77); "

    conn.execute(query)

    resp = conn.execute("SELECT * FROM ocean;")
    print(resp)
  • Support for writing in CSV format

    from cnosdb_connector import connect
    import os

    query = "CREATE TABLE air (\
    visibility DOUBLE,\
    temperature DOUBLE,\
    pressure DOUBLE,\
    TAGS(station));"

    conn = connect(url="http://127.0.0.1:8902/", user="root", password="")
    # table schema must same with csv file
    conn.execute(query)

    path = os.path.abspath("test.csv")
    conn.write_csv("air", path)

    resp = conn.execute("SELECT * FROM air;")
    print(resp)

Interface Documentation

In order to make it easier for users to connect to CnosDB, cnosdb_connector provides a simple wrapper for some common SQL.

# CREATE DATABASE database_name;
def create_database(self, database_name)

# CREATE DATABASE database_name WITH TTL ttl;
def create_database_with_ttl(self, database_name, ttl)

# CREATE USER user WITH PASSWORD = password;
def create_user(self, user, password)

# DROP DATABASE database_name;
def drop_database(self, database_name)

# DROP TABLE table_name;
def drop_table(self, table_name)

# DROP USER user;
def drop_user(self, user)

# SHOW DATABASES;
def list_database(self)

# SHOW TABLES;
def list_table(self)

If you have a better idea for an interface wrapper, feel free to submit a PR to our Python Connector source code repository.