{
"info": {
"author": "Fahri Reza",
"author_email": "dozymoe@gmail.com",
"bugtrack_url": null,
"classifiers": [
"License :: OSI Approved :: MIT License",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy"
],
"description": "FirehSQL\n========\n\n* URL : `Github `_\n* License : GPL v3\n\n\nSummary\n-------\n\nSimple SQL Query Builder, doesn't support CREATE TABLE, field definition and\nwhatnot, the library only observed the table field names.\n\nExample:\n\n\n.. code:: python\n\n from firehsql import SchemaBase\n\n class UserSchema(SchemaBase):\n\n TABLE_NAME = 'users'\n\n FIELDS = ('id', 'username', 'email', 'password', 'is_superuser',\n 'is_staff', 'created_at', 'modified_at')\n\n FILTER_BY_FIELDS = ('id', 'username', 'email', 'created_at')\n ORDER_BY_FIELDS = ('username',)\n\n # For PostgreSQL to return last inserted id\n RETURNING_FIELDS = ('id',)\n\n\n.. code:: python\n\n from itertools import chain\n import psycopg2\n\n from .schema import UserSchema\n\n def insert():\n sql = UserSchema.create_insert_sql()\n sql.set_values(\n username='User1',\n password='User1Password',\n email='User1@example.com')\n\n with psycopg2.connect('dbname=testdb') as conn:\n with conn.cursor() as cur:\n # INSERT INTO users (username, password, email)\n # VALUES (%s, %s, %s)\n #\n # ('User1', 'User1Password', 'User1@example.com')\n cur.execute(str(sql), sql.data)\n \n conn.commit()\n\n\n def select():\n sql = UserSchema.create_select_sql()\n\n filter_ = sql.create_or_filter()\n # The word 'LIKE' will not be checked if it was valid or not,\n # too bothersome, just don't put user's input in there.\n filter_.add(('username', 'Ach%', 'LIKE'))\n filter_.add(('username', 'Abd%', 'LIKE'))\n sql.set_filters(filter_)\n\n # Assumed DESCENDING if it was prefixed with hyphen (-), the target\n # being http query string.\n sql.set_sorting_order('username', '-id')\n\n page_size = 10\n page = 1\n page_offset = (page - 1) * page_size\n # Both page_size and page_offset tested to be of type integer.\n sql.set_limit(page_size, page_offset)\n\n with psycopg2.connect('dbname=testdb') as conn:\n with conn.cursor() as cur:\n # SELECT * FROM users WHERE username LIKE %s\n # OR username LIKE %s ORDER BY username, id DESC\n # LIMIT 10 OFFSET 0\n #\n # ('Ach%', 'Abd%')\n cur.execute(str(sql), sql.data)\n\n\n def update():\n sql = UserSchema.create_update_sql()\n\n sql.set_values(\n is_superuser=True,\n is_staff=True)\n\n # '=' will not be checked if it was valid operand or not.\n sql.set_filters(\n ('username', 'User1', '='))\n\n with psycopg2.connect('dbname=testdb') as conn:\n with conn.cursor() as cur:\n # UPDATE users SET is_superuser=%s, is_staff=%s\n # WHERE username = %s\n #\n # (True, True, 'User1')\n cur.execute(str(sql), sql.data)\n\n\n def filter_parser():\n\n # This is targetted at http query string\n\n sql = UserSchema.create_select_sql()\n\n data = {\n 'filter_by': {\n 'username': 'User%', # starts and/or ends with '%'\n 'email': '!null',\n 'created_at': '>10-2-2017',\n }\n }\n\n filters = chain(\n sql.find_filters(data['filter_by'],\n 'username', 'email'),\n\n sql.find_datetime_filters(data['filter_by'],\n 'created_at'),\n )\n\n sql.set_filters(*filters)\n\n with psycopg2.connect('dbname=testdb') as conn:\n with conn.cursor() as cur:\n # SELECT * FROM users WHERE username LIKE %s\n # AND email IS NOT NULL\n # AND created_at > %s\n # LIMIT 10 OFFSET 0\n #\n # ('User%', datetime.datetime(2017, 2, 10, 0, 0, 0, 0,\n # tzinfo=))\n cur.execute(str(sql), sql.data)\n\n\n def advance_filter_parser():\n sql = UserSchema.create_select_sql()\n\n data = {\n 'filter_by': [\n 'AND',\n [\n 'OR',\n {'name': 'User%'},\n {'name': '%User'},\n ],\n [\n 'OR',\n {'email': '!null'},\n {'email': '=admin@example.com'},\n },\n {'created_at': '>10-2-2017'},\n {\n 'id': ['=', 1, 2, 3],\n },\n {\n 'id': ['!', 4, 5, 6],\n },\n }\n }\n\n advanced_filter = sql.parse_adv_filters(\n data['filter_by'],\n (\n ('username', 'name', 'str'),\n ('email', 'str'),\n ('created_at', 'date'),\n ('id', 'int'),\n ))\n\n sql.set_filters(advanced_filter)\n\n with psycopg2.connect('dbname=testdb') as conn:\n with conn.cursor() as cur:\n # SELECT * FROM users WHERE\n # (username LIKE %s OR username LIKE %s)\n # AND\n # (email IS NOT NULL OR email = %s)\n # AND\n # created_at > %s\n # AND\n # id IN (%s, %s, %s)\n # AND\n # id NOT IN (%s, %s, %s)\n # LIMIT 10 OFFSET 0\n #\n # (\n # 'User%', '%User', 'admin@example.com',\n # datetime(2017, 2, 10, 0, 0, 0, 0, tzinfo=),\n # 1, 2, 3, 4, 5, 6,\n # )\n cur.execute(str(sql), sql.data)",
"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/dozymoe/firehsql",
"keywords": "",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "firehsql",
"package_url": "https://pypi.org/project/firehsql/",
"platform": "",
"project_url": "https://pypi.org/project/firehsql/",
"project_urls": {
"Homepage": "https://github.com/dozymoe/firehsql"
},
"release_url": "https://pypi.org/project/firehsql/1.0.4/",
"requires_dist": null,
"requires_python": ">=2.7.0",
"summary": "Simple SQL generator.",
"version": "1.0.4"
},
"last_serial": 5244901,
"releases": {
"1.0.0": [
{
"comment_text": "",
"digests": {
"md5": "11d3dee8c6f3335c9867fbc72d213baf",
"sha256": "382e1be14401f1948d80e6460419d4c608033ed5fc6e452ceb53b34804db581f"
},
"downloads": -1,
"filename": "firehsql-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "11d3dee8c6f3335c9867fbc72d213baf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 19632,
"upload_time": "2017-12-29T15:11:51",
"url": "https://files.pythonhosted.org/packages/0a/a6/b061446396e5bf76371430abe3157788cde96073237cbbce552e2faafc5d/firehsql-1.0.0.tar.gz"
}
],
"1.0.1": [
{
"comment_text": "",
"digests": {
"md5": "cdcbe4afb5fba328b314fa76414d7a32",
"sha256": "ce0f141e592f8b06b5f5d17d489096190a627196fc57d78b944e53b7c910658c"
},
"downloads": -1,
"filename": "firehsql-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "cdcbe4afb5fba328b314fa76414d7a32",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 19723,
"upload_time": "2018-02-15T09:29:02",
"url": "https://files.pythonhosted.org/packages/97/bc/8624f06e0cf8787c694ab4c9ac1d88e9319c076dc2cd7cd6e84780696dfa/firehsql-1.0.1.tar.gz"
}
],
"1.0.2": [
{
"comment_text": "",
"digests": {
"md5": "3e455832db24a2714f02f09cc6c770aa",
"sha256": "d739b861c2662fc64a8e2e1eb57d2efc47ce386649fa0d01d3c3b5d6e36ccb59"
},
"downloads": -1,
"filename": "firehsql-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "3e455832db24a2714f02f09cc6c770aa",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 57517,
"upload_time": "2019-03-31T19:17:09",
"url": "https://files.pythonhosted.org/packages/cb/df/a9bc2af78f108a502cd9b82398806b20e9234ea6579fb865c07c613d1d56/firehsql-1.0.2.tar.gz"
}
],
"1.0.4": [
{
"comment_text": "",
"digests": {
"md5": "d4e7acc863c9c52514fabd238e2e1b01",
"sha256": "78d5c5ca0d3743e37167b3f7d8e4668e3e3786791d82d076a3c8f3eb0ad26ecc"
},
"downloads": -1,
"filename": "firehsql-1.0.4.tar.gz",
"has_sig": false,
"md5_digest": "d4e7acc863c9c52514fabd238e2e1b01",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7.0",
"size": 40153,
"upload_time": "2019-05-08T21:57:08",
"url": "https://files.pythonhosted.org/packages/20/73/5e93f064a5eb28b3435f11d8e641331a33f8c53dd5d5f56be31ae50b8938/firehsql-1.0.4.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "d4e7acc863c9c52514fabd238e2e1b01",
"sha256": "78d5c5ca0d3743e37167b3f7d8e4668e3e3786791d82d076a3c8f3eb0ad26ecc"
},
"downloads": -1,
"filename": "firehsql-1.0.4.tar.gz",
"has_sig": false,
"md5_digest": "d4e7acc863c9c52514fabd238e2e1b01",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7.0",
"size": 40153,
"upload_time": "2019-05-08T21:57:08",
"url": "https://files.pythonhosted.org/packages/20/73/5e93f064a5eb28b3435f11d8e641331a33f8c53dd5d5f56be31ae50b8938/firehsql-1.0.4.tar.gz"
}
]
}