{ "info": { "author": "SQream Technologies", "author_email": "info@sqream.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": ".. role:: bash(code)\n :language: bash\n\n===== \nPython connector for SQream DB\n===== \n\n**Version:** 2.1.4a5\n\n**Supported SQream DB versions:** 1.13 onward\n\nInstalling\n----------\n\nInstall with `pip`, by running\n:bash:`pip install pysqream`.\n\nUsage example:\n----------\n\n.. code-block:: python\n\n ## Import and establish a connection \n # --------------------------------- \n import pysqream\n\n # version information\n print pysqream.version_info()\n\n con = pysqream.Connector()\n # Connection parameters: IP, Port, Database, Username, Password, Clustered, Timeout(sec)\n sqream_connection_params = '127.0.0.1', 5000, 'master', 'sqream', 'sqream', False, 30\n con.connect(*sqream_connection_params)\n\n\n ## Run queries using the API \n # ------------------------- \n # Create a table\n statement = 'create or replace table table_name (int_column int)'\n con.prepare(statement)\n con.execute()\n con.close()\n\n # Insert sample data\n statement = 'insert into table_name(int_column) values (5), (6)'\n con.prepare(statement)\n con.execute()\n con.close()\n\n # Retreive data\n statement = 'select int_column from table_name'\n con.prepare(statement)\n con.execute()\n con.next_row()\n\n # Pull out the actual data\n first_row_int = con.get_int(1)\n con.next_row()\n second_row_int = con.get_int(1)\n con.next_row()\n print (first_row_int, second_row_int)\n con.close()\n\n\n ## After running all statements\n # ----------------------------\n con.close_connection()\n\n\nExample of GET data loop:\n----------\n\n.. code-block:: python\n\n # Here we create the according table by\n # executing a \"create or replace table table_name (int_column int, varchar_column varchar(10))\" statement\n\n row1 = []\n row2 = []\n\n statement = 'select int_column, varchar_column from table_name'\n con.prepare(statement)\n con.execute()\n\n while con.next_row():\n row1.append(con.get_int(1))\n row2.append(con.get_string(2))\n\n con.close()\n con.close_connection()\n\nExample of a SET data loop for data loading:\n----------\n.. code-block:: python\n\n # here we create the according table by executing a \n # \"create or replace table table_name (int_column int, varchar_column varchar(10))\" statement\n\n row1 = [1,2,3]\n row2 = [\"s1\",\"s2\",\"s3\"]\n length_of_arrays = 3\n\n # each interogation symbol represent a column to which the network insertion can push\n statement = 'insert into table_name(int_column, varchar_column) values(?, ?)' \n con.prepare(statement)\n con.execute()\n\n for idx in range(length_of_arrays):\n con.set_int(1, row1[idx]) # we put a value at column 1 of the table\n con.set_varchar(2, row2[idx]) # we put a value at column 2 of the table\n con.next_row()\n\n con.close()\n con.close_connection()\n\nExample inserting from a csv to SQream\n----------\n.. code-block:: python\n\n def insert_from_csv(con,table_name,csv_filename, field_delimiter = ',', null_markers = []):\n\n # get info on the columns for the insert statement\n\n # you can get this info after preparing the insert, but we need to at\n # least know the number of columns to be able to construct the insert\n # statement\n\n with pysqream.sqream_run(con,f\"select * from {table_name} limit 0\") as con:\n column_types = con.get_column_types()\n\n\n def parse_datetime(v):\n try:\n return datetime.datetime.strptime(row[i], '%Y-%m-%d %H:%M:%S.%f')\n except ValueError:\n try: \n return datetime.datetime.strptime(row[i], '%Y-%m-%d %H:%M:%S')\n except ValueError:\n return datetime.datetime.strptime(row[i], '%Y-%m-%d')\n\n # insert the csv\n qstring = \",\".join(['?'] * len(column_types))\n with pysqream.sqream_run(con, f\"insert into {table_name} values ({qstring})\") as con:\n with open(csv_filename, mode='r') as csv_file:\n csv_reader = csv.reader(csv_file, delimiter=field_delimiter)\n for row in csv_reader:\n for i,(t,v) in enumerate(zip(column_types, row)):\n ii = i + 1\n if row[i] in null_markers:\n con.set_null(ii)\n elif t.tid == 'Tinyint':\n con.set_ubyte(ii, int(row[i]))\n elif t.tid == \"Smallint\":\n con.set_short(ii, int(row[i]))\n elif t.tid == \"Int\":\n con.set_int(ii, int(row[i]))\n elif t.tid == \"Bigint\":\n con.set_long(ii, int(row[i]))\n elif t.tid == \"Real\":\n con.set_float(ii, float(row[i]))\n elif t.tid == \"Float\":\n con.set_double(ii, float(row[i]))\n elif t.tid == \"Date\":\n dt = datetime.datetime.strptime(row[i], \"%Y-%m-%d\")\n dt = datetime.date(dt.year, dt.month, dt.day)\n con.set_date(ii, dt)\n elif t.tid == \"DateTime\":\n dt = parse_datetime(row[i])\n con.set_datetime(ii, dt)\n elif t.tid == \"Varchar\":\n con.set_varchar(ii, row[i])\n elif t.tid == \"NVarchar\":\n con.set_nvarchar(ii, row[i])\n con.next_row()\n\nExample saving the results of a query to a csv file\n----------\n.. code-block:: python\n\n def save_query(con, query, csv_filename, field_delimiter, null_marker):\n\n with pysqream.sqream_run(con, query) as con:\n column_types = con.get_column_types()\n with open(csv_filename, 'x', newline='') as csvfile:\n wr = csv.writer(csvfile, delimiter=field_delimiter,quoting=csv.QUOTE_MINIMAL)\n while con.next_row():\n csv_row = []\n for i,t in enumerate(column_types):\n ii = i + 1\n if con.is_null(ii):\n csv_row.append(null_marker)\n elif t.tid == 'Tinyint':\n csv_row.append(con.get_ubyte(ii))\n elif t.tid == \"Smallint\":\n csv_row.append(con.get_short(ii))\n elif t.tid == \"Int\":\n csv_row.append(con.get_int(ii))\n elif t.tid == \"Bigint\":\n csv_row.append(con.get_long(ii))\n elif t.tid == \"Real\":\n csv_row.append(con.get_float(ii))\n elif t.tid == \"Float\":\n csv_row.append(con.get_double(ii))\n elif t.tid == \"Date\":\n csv_row.append(con.get_date(ii))\n elif t.tid == \"DateTime\":\n csv_row.append(con.get_datetime(ii))\n elif t.tid == \"Varchar\":\n csv_row.append(con.get_varchar(ii))\n elif t.tid == \"NVarchar\":\n csv_row.append(con.get_nvarchar(ii))\n wr.writerow(csv_row)\n\nAPI Reference\n-------------\n\nAll functions are accessed through the Connector class imported from pysqream.py:\n\n**Initialization - Termination**\n\n.. code-block:: python\n\n import pysqream\n con = pysqream.Connector()\n\n # arg types are: string, integer, string, string, string, boolean, integer\n con.connect(ip, port, database, username, password, clustered, timeout) \n\n # closes the statement (to do after execute + necessary fetch/put to close the statement and be \n # able to open another one through prepare())\n con.close() \n\n # closes the connection completely, destructing the socket, a call to \"connect(..)\" needs to be done do continue\n con.close_connection() \n\n\n**High level protocol functions**\n\n.. code-block:: python\n\n con.prepare(statement) #string of the query to run\n con.execute()\n\n # if the statement is an insert it produces a put and for select it produces a fetch, rows are \n # incremented through that function (see Usage example)\n con.next_row() \n\n**Get column based data**\n\nBy column id or column name (integer or string)\n\n.. code-block:: python\n\n is_null(col_id_or_col_name)\n get_bool(col_id_or_col_name)\n get_ubyte(col_id_or_col_name)\n get_short(col_id_or_col_name)\n get_int(col_id_or_col_name)\n get_long(col_id_or_col_name)\n get_float(col_id_or_col_name)\n get_double(col_id_or_col_name)\n get_date(col_id_or_col_name)\n get_datetime(col_id_or_col_name)\n get_varchar(col_id_or_col_name)\n get_nvarchar(col_id_or_col_name)\n\n\n**Set column based data**\n\nBy column id\n\n.. code-block:: python\n\n set_null(col)\n set_bool(col, val)\n set_ubyte(col, val)\n set_short(col, val)\n set_int(col, val)\n set_long(col, val)\n set_float(col, val)\n set_double(col, val)\n set_date(col, val)\n set_datetime(col, val)\n set_varchar(col, val)\n set_nvarchar(col, val)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/SQream/pysqream", "keywords": "database sqream sqreamdb", "license": "", "maintainer": "", "maintainer_email": "", "name": "pysqream", "package_url": "https://pypi.org/project/pysqream/", "platform": "", "project_url": "https://pypi.org/project/pysqream/", "project_urls": { "Homepage": "https://github.com/SQream/pysqream" }, "release_url": "https://pypi.org/project/pysqream/2.1.4a5/", "requires_dist": null, "requires_python": ">=2.7, ~=3.3", "summary": "Python Native API for communicating with SQream DB", "version": "2.1.4a5" }, "last_serial": 5640686, "releases": { "2.1.3a2": [ { "comment_text": "", "digests": { "md5": "643ed3195a4102cb2a2b8fdfbe50c65d", "sha256": "0fbcfa28a270d4c89565e1f08d9a3acd7e506266bfe99d07a1e4b97402c6666f" }, "downloads": -1, "filename": "pysqream-2.1.3a2-py3-none-any.whl", "has_sig": false, "md5_digest": "643ed3195a4102cb2a2b8fdfbe50c65d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, ~=3.3", "size": 17168, "upload_time": "2019-06-29T10:15:07", "url": "https://files.pythonhosted.org/packages/d0/8a/abf5d462a628f22c63847f8e4dc551dafe5843bd0d1f79a75eb3ce8c8e50/pysqream-2.1.3a2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "33eb5dd5246157fee6db9b91be4f9bcd", "sha256": "4b7cc551b7f2b96c64cdb4b79f9dea3fb3bf165a66f28924519d663d4401c55d" }, "downloads": -1, "filename": "pysqream-2.1.3a2.tar.gz", "has_sig": false, "md5_digest": "33eb5dd5246157fee6db9b91be4f9bcd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, ~=3.3", "size": 17113, "upload_time": "2019-06-29T10:15:09", "url": "https://files.pythonhosted.org/packages/7d/b8/49002cdbe2e1a63b589e2da70ad5df2c0fbaae8d8f5e16e3dc2ff796dde8/pysqream-2.1.3a2.tar.gz" } ], "2.1.4a1": [ { "comment_text": "", "digests": { "md5": "6e0948bcca098e4647b4e6120a270d32", "sha256": "09cd38d762520195490239f053fa320e258864719162530ad2dec2f05b217177" }, "downloads": -1, "filename": "pysqream-2.1.4a1-py3-none-any.whl", "has_sig": false, "md5_digest": "6e0948bcca098e4647b4e6120a270d32", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, ~=3.3", "size": 17235, "upload_time": "2019-07-22T15:14:29", "url": "https://files.pythonhosted.org/packages/f9/b8/f71b19e154502232a134b5d830162e26c825c177c97d874a22429e6a90be/pysqream-2.1.4a1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8851f3385c4558376078e1a4ac292479", "sha256": "dd82f9936851f2c493dde06711731d3068ca0eb63892f618efbe2e24cd12a7c0" }, "downloads": -1, "filename": "pysqream-2.1.4a1.tar.gz", "has_sig": false, "md5_digest": "8851f3385c4558376078e1a4ac292479", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, ~=3.3", "size": 17293, "upload_time": "2019-07-22T15:14:32", "url": "https://files.pythonhosted.org/packages/65/f5/53b78ad5c93fac7c9e0e2ef812d3ccd947dbb098de70f3f84f4392524d13/pysqream-2.1.4a1.tar.gz" } ], "2.1.4a2": [ { "comment_text": "", "digests": { "md5": "4252f5a3286a9e99ad9d4cf4279496f1", "sha256": "c9745908707e5ced4a417d9efd233084a3c7a45f64a04fee3d334229c22da9d6" }, "downloads": -1, "filename": "pysqream-2.1.4a2-py3-none-any.whl", "has_sig": false, "md5_digest": "4252f5a3286a9e99ad9d4cf4279496f1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, ~=3.3", "size": 17353, "upload_time": "2019-07-22T15:14:30", "url": "https://files.pythonhosted.org/packages/1c/4f/f86b5b89b9c31900d8dd7c3c6a8d7639daa66f65e06a5911f275135f5e89/pysqream-2.1.4a2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "52b7f5d2b2315eaccb805a07ba41d1ec", "sha256": "826dd3fd0523314999341c11040398ba142a72caa673e8468a3cc14e1e7d268e" }, "downloads": -1, "filename": "pysqream-2.1.4a2.tar.gz", "has_sig": false, "md5_digest": "52b7f5d2b2315eaccb805a07ba41d1ec", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, ~=3.3", "size": 17404, "upload_time": "2019-07-22T15:14:34", "url": "https://files.pythonhosted.org/packages/39/53/dae0f420637a6cde292b8a5f15fc7488509e3dd6f436428ac44ba182d5a4/pysqream-2.1.4a2.tar.gz" } ], "2.1.4a3": [ { "comment_text": "", "digests": { "md5": "2a2335f55ab4975c0e2c46ad1ed5fde6", "sha256": "6e47e45bbfb5a7bea341964f6922eb97735778a36a09768e4a20a7e30cb511a7" }, "downloads": -1, "filename": "pysqream-2.1.4a3-py3-none-any.whl", "has_sig": false, "md5_digest": "2a2335f55ab4975c0e2c46ad1ed5fde6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, ~=3.3", "size": 17619, "upload_time": "2019-08-05T14:54:31", "url": "https://files.pythonhosted.org/packages/59/9f/39c141e1f7835b7975ea347e2a0209519888d54ddf52b9d559f85eb0b701/pysqream-2.1.4a3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b1ba716f1a959e98581b4ef97ed60a8a", "sha256": "5dab6d89afe543062dc3b457f2ef8da2ffacbda2ff785a038743e90f2c4855b2" }, "downloads": -1, "filename": "pysqream-2.1.4a3.tar.gz", "has_sig": false, "md5_digest": "b1ba716f1a959e98581b4ef97ed60a8a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, ~=3.3", "size": 18801, "upload_time": "2019-08-05T14:54:33", "url": "https://files.pythonhosted.org/packages/44/a1/58729c8bc50e45d4840c1ad377df5558623d1da9532a41daca27e369f7f7/pysqream-2.1.4a3.tar.gz" } ], "2.1.4a5": [ { "comment_text": "", "digests": { "md5": "e8c63aec30ec4b6a5d64b3b1553e69b5", "sha256": "ce00a9b68ea35be0902f4ab8d20e0c1f36f818b03791ff1e60cd9ef0d3ef08d5" }, "downloads": -1, "filename": "pysqream-2.1.4a5-py3-none-any.whl", "has_sig": false, "md5_digest": "e8c63aec30ec4b6a5d64b3b1553e69b5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, ~=3.3", "size": 17628, "upload_time": "2019-08-06T16:26:26", "url": "https://files.pythonhosted.org/packages/54/5e/e3e8b9f0d6140d4f03999890439dcb33bc58448028fd4d845ff7dac65987/pysqream-2.1.4a5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6b70c807c95d28c0b116ceb2a1f28c84", "sha256": "fdc50c02a333d4441f58301e65d9d288060a45d0571bcfd6633642fc7edd8f5a" }, "downloads": -1, "filename": "pysqream-2.1.4a5.tar.gz", "has_sig": false, "md5_digest": "6b70c807c95d28c0b116ceb2a1f28c84", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, ~=3.3", "size": 18815, "upload_time": "2019-08-06T16:26:27", "url": "https://files.pythonhosted.org/packages/c5/43/b16269e8ad2e30ed572d77423ca1644c8d96e729313537dca39fd4aa33d2/pysqream-2.1.4a5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e8c63aec30ec4b6a5d64b3b1553e69b5", "sha256": "ce00a9b68ea35be0902f4ab8d20e0c1f36f818b03791ff1e60cd9ef0d3ef08d5" }, "downloads": -1, "filename": "pysqream-2.1.4a5-py3-none-any.whl", "has_sig": false, "md5_digest": "e8c63aec30ec4b6a5d64b3b1553e69b5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, ~=3.3", "size": 17628, "upload_time": "2019-08-06T16:26:26", "url": "https://files.pythonhosted.org/packages/54/5e/e3e8b9f0d6140d4f03999890439dcb33bc58448028fd4d845ff7dac65987/pysqream-2.1.4a5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6b70c807c95d28c0b116ceb2a1f28c84", "sha256": "fdc50c02a333d4441f58301e65d9d288060a45d0571bcfd6633642fc7edd8f5a" }, "downloads": -1, "filename": "pysqream-2.1.4a5.tar.gz", "has_sig": false, "md5_digest": "6b70c807c95d28c0b116ceb2a1f28c84", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, ~=3.3", "size": 18815, "upload_time": "2019-08-06T16:26:27", "url": "https://files.pythonhosted.org/packages/c5/43/b16269e8ad2e30ed572d77423ca1644c8d96e729313537dca39fd4aa33d2/pysqream-2.1.4a5.tar.gz" } ] }