diff --git a/.gitignore b/.gitignore index e0251ad..1c31170 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ doc/_build/ *.pem local_test/ local_test.py +_* # python diff --git a/README.md b/README.md index 4e503ff..1f2994f 100644 --- a/README.md +++ b/README.md @@ -1 +1,187 @@ # python-wsdb + +![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/ajshedivy/python-wsdb/main.yml)![PyPI - Version](https://img.shields.io/pypi/v/python-wsdb) + + + +#### ⚠️ (WIP!) This Project is for demo purposes only + +## Overview + +![alt text](images/image-1.png) + +`python-wsdb` is a Python client implementation that leverages the [CodeFori Server Component](https://github.com/ThePrez/CodeForIBMiServer). + +## Setup + +`python-wsdb` requires Python 3.9 or later. + +### Install with `pip` + +`python-wsdb` is available on [PyPi](https://pypi.org/project/python-wsdb/). Just Run + +``` +pip install python-wsdb +``` + +### Server Component Setup (Forthcoming) + +## Example usage + +The following script sets up a `DaemonServer` object that will be used to connect with the Server Component. Then a single `SQLJob` is created to facilitate the connection from the client side. + +```[python] +from python_wsdb.client.sql_job import SQLJob +from python_wsdb.types import DaemonServer + +creds = DaemonServer( + host="localhost", + port=8085, + user="USER", + password="PASSWORD", + ignoreUnauthorized=True +) + + +job = SQLJob() +res = job.connect(creds) +query = job.query("select * from sample.employee") +result = query.run(rows_to_fetch=3) +print(result) +``` + +Here is the output from the script above: + +``` +{ + "id":"query3", + "has_results":true, + "update_count":-1, + "metadata":{ + "column_count":14, + "job":"330955/QUSER/QZDASOINIT", + "columns":[ + { + "name":"EMPNO", + "type":"CHAR", + "display_size":6, + "label":"EMPNO" + }, + { + "name":"FIRSTNME", + "type":"VARCHAR", + "display_size":12, + "label":"FIRSTNME" + }, + { + "name":"MIDINIT", + "type":"CHAR", + "display_size":1, + "label":"MIDINIT" + }, + { + "name":"LASTNAME", + "type":"VARCHAR", + "display_size":15, + "label":"LASTNAME" + }, + { + "name":"WORKDEPT", + "type":"CHAR", + "display_size":3, + "label":"WORKDEPT" + }, + { + "name":"PHONENO", + "type":"CHAR", + "display_size":4, + "label":"PHONENO" + }, + { + "name":"HIREDATE", + "type":"DATE", + "display_size":10, + "label":"HIREDATE" + }, + { + "name":"JOB", + "type":"CHAR", + "display_size":8, + "label":"JOB" + }, + { + "name":"EDLEVEL", + "type":"SMALLINT", + "display_size":6, + "label":"EDLEVEL" + }, + { + "name":"SEX", + "type":"CHAR", + "display_size":1, + "label":"SEX" + }, + { + "name":"BIRTHDATE", + "type":"DATE", + "display_size":10, + "label":"BIRTHDATE" + }, + { + "name":"SALARY", + "type":"DECIMAL", + "display_size":11, + "label":"SALARY" + }, + { + "name":"BONUS", + "type":"DECIMAL", + "display_size":11, + "label":"BONUS" + }, + { + "name":"COMM", + "type":"DECIMAL", + "display_size":11, + "label":"COMM" + } + ] + }, + "data":[ + { + "EMPNO":"000010", + "FIRSTNME":"CHRISTINE", + "MIDINIT":"I", + "LASTNAME":"HAAS", + "WORKDEPT":"A00", + "PHONENO":"3978", + "HIREDATE":"01/01/65", + "JOB":"PRES", + "EDLEVEL":18, + "SEX":"F", + "BIRTHDATE":"None", + "SALARY":52750.0, + "BONUS":1000.0, + "COMM":4220.0 + } + ], + "is_done":false, + "success":true +} + +``` + + + + + + + + + + + + + + + diff --git a/examples/simple-example.ipynb b/examples/simple-example.ipynb new file mode 100644 index 0000000..60758c4 --- /dev/null +++ b/examples/simple-example.ipynb @@ -0,0 +1,389 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from python_wsdb.client.sql_job import SQLJob\n", + "from python_wsdb.types import DaemonServer\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'id': 'query3',\n", + " 'has_results': True,\n", + " 'update_count': -1,\n", + " 'metadata': {'column_count': 14,\n", + " 'job': '330955/QUSER/QZDASOINIT',\n", + " 'columns': [{'name': 'EMPNO',\n", + " 'type': 'CHAR',\n", + " 'display_size': 6,\n", + " 'label': 'EMPNO'},\n", + " {'name': 'FIRSTNME',\n", + " 'type': 'VARCHAR',\n", + " 'display_size': 12,\n", + " 'label': 'FIRSTNME'},\n", + " {'name': 'MIDINIT', 'type': 'CHAR', 'display_size': 1, 'label': 'MIDINIT'},\n", + " {'name': 'LASTNAME',\n", + " 'type': 'VARCHAR',\n", + " 'display_size': 15,\n", + " 'label': 'LASTNAME'},\n", + " {'name': 'WORKDEPT',\n", + " 'type': 'CHAR',\n", + " 'display_size': 3,\n", + " 'label': 'WORKDEPT'},\n", + " {'name': 'PHONENO', 'type': 'CHAR', 'display_size': 4, 'label': 'PHONENO'},\n", + " {'name': 'HIREDATE',\n", + " 'type': 'DATE',\n", + " 'display_size': 10,\n", + " 'label': 'HIREDATE'},\n", + " {'name': 'JOB', 'type': 'CHAR', 'display_size': 8, 'label': 'JOB'},\n", + " {'name': 'EDLEVEL',\n", + " 'type': 'SMALLINT',\n", + " 'display_size': 6,\n", + " 'label': 'EDLEVEL'},\n", + " {'name': 'SEX', 'type': 'CHAR', 'display_size': 1, 'label': 'SEX'},\n", + " {'name': 'BIRTHDATE',\n", + " 'type': 'DATE',\n", + " 'display_size': 10,\n", + " 'label': 'BIRTHDATE'},\n", + " {'name': 'SALARY',\n", + " 'type': 'DECIMAL',\n", + " 'display_size': 11,\n", + " 'label': 'SALARY'},\n", + " {'name': 'BONUS', 'type': 'DECIMAL', 'display_size': 11, 'label': 'BONUS'},\n", + " {'name': 'COMM', 'type': 'DECIMAL', 'display_size': 11, 'label': 'COMM'}]},\n", + " 'data': [{'EMPNO': '000010',\n", + " 'FIRSTNME': 'CHRISTINE',\n", + " 'MIDINIT': 'I',\n", + " 'LASTNAME': 'HAAS',\n", + " 'WORKDEPT': 'A00',\n", + " 'PHONENO': '3978',\n", + " 'HIREDATE': '01/01/65',\n", + " 'JOB': 'PRES',\n", + " 'EDLEVEL': 18,\n", + " 'SEX': 'F',\n", + " 'BIRTHDATE': None,\n", + " 'SALARY': 52750.0,\n", + " 'BONUS': 1000.0,\n", + " 'COMM': 4220.0},\n", + " {'EMPNO': '000020',\n", + " 'FIRSTNME': 'MICHAEL',\n", + " 'MIDINIT': 'L',\n", + " 'LASTNAME': 'THOMPSON',\n", + " 'WORKDEPT': 'B01',\n", + " 'PHONENO': '3476',\n", + " 'HIREDATE': '10/10/73',\n", + " 'JOB': 'MANAGER',\n", + " 'EDLEVEL': 18,\n", + " 'SEX': 'M',\n", + " 'BIRTHDATE': '02/02/48',\n", + " 'SALARY': 41250.0,\n", + " 'BONUS': 800.0,\n", + " 'COMM': 3300.0},\n", + " {'EMPNO': '000030',\n", + " 'FIRSTNME': 'SALLY',\n", + " 'MIDINIT': 'A',\n", + " 'LASTNAME': 'KWAN',\n", + " 'WORKDEPT': 'C01',\n", + " 'PHONENO': '4738',\n", + " 'HIREDATE': '04/05/75',\n", + " 'JOB': 'MANAGER',\n", + " 'EDLEVEL': 20,\n", + " 'SEX': 'F',\n", + " 'BIRTHDATE': '05/11/41',\n", + " 'SALARY': 38250.0,\n", + " 'BONUS': 800.0,\n", + " 'COMM': 3060.0},\n", + " {'EMPNO': '000050',\n", + " 'FIRSTNME': 'JOHN',\n", + " 'MIDINIT': 'B',\n", + " 'LASTNAME': 'GEYER',\n", + " 'WORKDEPT': 'E01',\n", + " 'PHONENO': '6789',\n", + " 'HIREDATE': '08/17/49',\n", + " 'JOB': 'MANAGER',\n", + " 'EDLEVEL': 16,\n", + " 'SEX': 'M',\n", + " 'BIRTHDATE': None,\n", + " 'SALARY': 40175.0,\n", + " 'BONUS': 800.0,\n", + " 'COMM': 3214.0},\n", + " {'EMPNO': '000060',\n", + " 'FIRSTNME': 'IRVING',\n", + " 'MIDINIT': 'F',\n", + " 'LASTNAME': 'STERN',\n", + " 'WORKDEPT': 'D11',\n", + " 'PHONENO': '6423',\n", + " 'HIREDATE': '09/14/73',\n", + " 'JOB': 'MANAGER',\n", + " 'EDLEVEL': 16,\n", + " 'SEX': 'M',\n", + " 'BIRTHDATE': '07/07/45',\n", + " 'SALARY': 32250.0,\n", + " 'BONUS': 500.0,\n", + " 'COMM': 2580.0}],\n", + " 'is_done': False,\n", + " 'success': True}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "creds = DaemonServer(\n", + " host=\"localhost\",\n", + " port=8085,\n", + " user=\"ashedivy\",\n", + " password=\"ashedivy1234567\",\n", + " ignoreUnauthorized=True,\n", + ")\n", + "\n", + "job = SQLJob()\n", + "res = job.connect(creds)\n", + "query = job.query(\"select * from sample.employee\")\n", + "result = query.run(rows_to_fetch=5)\n", + "result" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
EMPNOFIRSTNMEMIDINITLASTNAMEWORKDEPTPHONENOHIREDATEJOBEDLEVELSEXBIRTHDATESALARYBONUSCOMM
0000010CHRISTINEIHAASA00397801/01/65PRES18FNone52750.01000.04220.0
1000020MICHAELLTHOMPSONB01347610/10/73MANAGER18M02/02/4841250.0800.03300.0
2000030SALLYAKWANC01473804/05/75MANAGER20F05/11/4138250.0800.03060.0
3000050JOHNBGEYERE01678908/17/49MANAGER16MNone40175.0800.03214.0
4000060IRVINGFSTERND11642309/14/73MANAGER16M07/07/4532250.0500.02580.0
\n", + "
" + ], + "text/plain": [ + " EMPNO FIRSTNME MIDINIT LASTNAME WORKDEPT PHONENO HIREDATE JOB \\\n", + "0 000010 CHRISTINE I HAAS A00 3978 01/01/65 PRES \n", + "1 000020 MICHAEL L THOMPSON B01 3476 10/10/73 MANAGER \n", + "2 000030 SALLY A KWAN C01 4738 04/05/75 MANAGER \n", + "3 000050 JOHN B GEYER E01 6789 08/17/49 MANAGER \n", + "4 000060 IRVING F STERN D11 6423 09/14/73 MANAGER \n", + "\n", + " EDLEVEL SEX BIRTHDATE SALARY BONUS COMM \n", + "0 18 F None 52750.0 1000.0 4220.0 \n", + "1 18 M 02/02/48 41250.0 800.0 3300.0 \n", + "2 20 F 05/11/41 38250.0 800.0 3060.0 \n", + "3 16 M None 40175.0 800.0 3214.0 \n", + "4 16 M 07/07/45 32250.0 500.0 2580.0 " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.DataFrame(result['data'])\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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vKyUiOgtunLlCh48eIAvv/wSPXr0YDCsJHJychAcHIwLFy5g165dWLFiRYULhm9TeHg4Hj58iGnTpsHLywtdunTRdElERFQCDIdERG9Rr169EBsbi9atW7/yLpmkPWJiYtCiRQuYmprio48+wqRJkzRdkkaNHz8eZ86cQePGjbFhwwbeOZOISEvwslIiIiIiIiLiUhZERERERETEcEhERERERERgOCQiIiIiIiLwhjRlSqFQIDo6GiYmJmy+JyIiIiKqwkRRRHp6OhwcHCCRaMecHMNhGYqOjoaTk5OmyyAiIiIiogoiKioK1apV03QZJcJwWIZMTEwAFH4BTE1NNVwNERERERFpSlpaGpycnJQZQRswHJahoktJTU1NGQ6JiIiIiEir2s204+JXIiIiIiIiKlcMh0RERERERMRwSEREREREROw5JCIiIiKqNERRRH5+PgoKCjRdSqUnlUqho6OjVT2Fr8JwSERERERUCeTm5iImJgZPnz7VdClVhqGhIezt7aGrq6vpUsoEwyERERERkZZTKBR48OABpFIpHBwcoKurW6lmtCoaURSRm5uLhIQEPHjwALVr19aahe5fhuGQiIiIiEjL5ebmQqFQwMnJCYaGhpoup0owMDCATCbDw4cPkZubC319fU2X9Ma0P94SEREREREAVIrZK21S2d7vyvVqSI2/vz8EQYAgCJDJZKhZsyamT5+OzMxMREREKPcJggC5XI7mzZtj7969KudYv369yriix7N/HYmPj8dHH32E6tWrQ09PD3Z2dujUqROCgoLe9ksmIiIiIqLXwMtKq4DOnTtj3bp1yMvLw6lTpzB69GhkZmZixowZAIC//voLDRo0QEpKCn744Qf06dMHwcHBaNiwofIcpqamuHXrlsp5n72OvU+fPsjLy8OGDRtQs2ZNxMXF4e+//0ZSUtLbeZFERERERPRGGA6rgKKZPAAYPHgwjh8/jj///FMZDi0tLWFnZwc7Ozt8/fXXWLVqFY4fP64SDgVBUJ7jeSkpKTh9+jROnDiB9957DwDg7OyMpk2blvMrIyIiIqKyVKAQceFBEuLTs2Fjoo+mNSwglVTsG9usX78eU6dORUpKiqZL0Xq8rLQKMjAwQF5entr2vLw8rFmzBgAgk8lKfD5jY2MYGxvjzz//RE5OTpnVSURERERvz6GwGLRafAyD1pzDlMAQ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GzbUqVOndObMGXsIq7iydyNs3LhRw4YNc3h86623Srr4uhYsWGC/EQ8A4NeLG9IAAG6a0tJSFRQUOBzHjh372ft6eXnpkUce0Y4dO/Tll19q3LhxGjhwYKWPlEoXr2iNHj1azz33nFasWKHdu3drxIgROnv2rB577DH7Ond3dw0fPlwvvPCCIiIiHD5qee+99yomJkYPPPCAVq5cqby8PG3YsEHjx4+33zRn4sSJeuedd5SSkqJdu3Zpz549WrBgQbV3Ib1caGionnnmGf31r391GO/atat8fHz04osvKjc3V++9954yMjKu8127skWLFiktLU3ffvutkpOTtXnzZvtNgAYPHqzg4GD17dtXX375pfbv3681a9boqaee0qFDh25YDQAA5yMcAgBumhUrVigsLMzhuOuuu372vhEREerXr5/uv/9+9e7dW1FRUZo+ffoV10+ZMkX9+/fX0KFD1blzZ+Xm5mrlypUOP6shSY899pjKysqUlJTkMG6xWPTpp5/qnnvuUVJSklq1aqVBgwYpLy/P/j3J2NhYLVu2TKtWrdLtt9+ubt266S9/+YuaNWt2Xa/tueeek5+fn8NYUFCQ3n33XX366adq3769MjMzlZKScl37Vuell17S/Pnz1aFDB82ZM0fz5s1T27ZtJUk+Pj5au3atmjZtqn79+qlNmzZKSkrSuXPnuJIIAL8yFnP5lxgAAHBhKSkpWrp06Q39WGWF9evXq0ePHjp06JA99AEAUFvwnUMAQK1XWlqqgwcPasKECRo4cCDBEABQK/GxUgBArZeZmanIyEgVFRVp6tSpzi4HAACn4GOlAAAAAACuHAIAAAAACIcAAAAAABEOAQAAAAAiHAIAAAAARDgEAAAAAIhwCAAAAAAQ4RAAAAAAIMIhAAAAAEDS/wLifgk7saJlEAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "# Create a new figure\n", + "plt.figure(figsize=(10,6))\n", + "\n", + "# Plot salary and bonus against EMPNO\n", + "plt.plot(df['EMPNO'], df['SALARY'], '-o', label='Salary')\n", + "\n", + "# Add labels for job titles and education level\n", + "for i, txt in enumerate(df['JOB']):\n", + " plt.annotate(txt, (df['EMPNO'][i], df['SALARY'][i]))\n", + "for i, txt in enumerate(df['EDLEVEL']):\n", + " plt.annotate(txt, (df['EMPNO'][i], df['BONUS'][i]))\n", + "\n", + "# Add title and labels\n", + "plt.title('Salary and Bonus by Employee Number')\n", + "plt.xlabel('Employee Number')\n", + "plt.ylabel('Amount')\n", + "\n", + "# Add a legend\n", + "plt.legend()\n", + "\n", + "# Show the plot\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "test-py-wsdb", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/images/image-1.png b/images/image-1.png new file mode 100644 index 0000000..86c53b9 Binary files /dev/null and b/images/image-1.png differ diff --git a/test.ipynb b/test.ipynb deleted file mode 100644 index c2b89ed..0000000 --- a/test.ipynb +++ /dev/null @@ -1,376 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from python_wsdb.client.sql_job import SQLJob\n", - "from python_wsdb.types import DaemonServer\n", - "import pandas as pd" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'id': 'query3',\n", - " 'has_results': True,\n", - " 'update_count': -1,\n", - " 'metadata': {'column_count': 14,\n", - " 'job': '329627/QUSER/QZDASOINIT',\n", - " 'columns': [{'name': 'EMPNO',\n", - " 'type': 'CHAR',\n", - " 'display_size': 6,\n", - " 'label': 'EMPNO'},\n", - " {'name': 'FIRSTNME',\n", - " 'type': 'VARCHAR',\n", - " 'display_size': 12,\n", - " 'label': 'FIRSTNME'},\n", - " {'name': 'MIDINIT', 'type': 'CHAR', 'display_size': 1, 'label': 'MIDINIT'},\n", - " {'name': 'LASTNAME',\n", - " 'type': 'VARCHAR',\n", - " 'display_size': 15,\n", - " 'label': 'LASTNAME'},\n", - " {'name': 'WORKDEPT',\n", - " 'type': 'CHAR',\n", - " 'display_size': 3,\n", - " 'label': 'WORKDEPT'},\n", - " {'name': 'PHONENO', 'type': 'CHAR', 'display_size': 4, 'label': 'PHONENO'},\n", - " {'name': 'HIREDATE',\n", - " 'type': 'DATE',\n", - " 'display_size': 10,\n", - " 'label': 'HIREDATE'},\n", - " {'name': 'JOB', 'type': 'CHAR', 'display_size': 8, 'label': 'JOB'},\n", - " {'name': 'EDLEVEL',\n", - " 'type': 'SMALLINT',\n", - " 'display_size': 6,\n", - " 'label': 'EDLEVEL'},\n", - " {'name': 'SEX', 'type': 'CHAR', 'display_size': 1, 'label': 'SEX'},\n", - " {'name': 'BIRTHDATE',\n", - " 'type': 'DATE',\n", - " 'display_size': 10,\n", - " 'label': 'BIRTHDATE'},\n", - " {'name': 'SALARY',\n", - " 'type': 'DECIMAL',\n", - " 'display_size': 11,\n", - " 'label': 'SALARY'},\n", - " {'name': 'BONUS', 'type': 'DECIMAL', 'display_size': 11, 'label': 'BONUS'},\n", - " {'name': 'COMM', 'type': 'DECIMAL', 'display_size': 11, 'label': 'COMM'}]},\n", - " 'data': [{'EMPNO': '000010',\n", - " 'FIRSTNME': 'CHRISTINE',\n", - " 'MIDINIT': 'I',\n", - " 'LASTNAME': 'HAAS',\n", - " 'WORKDEPT': 'A00',\n", - " 'PHONENO': '3978',\n", - " 'HIREDATE': '01/01/65',\n", - " 'JOB': 'PRES',\n", - " 'EDLEVEL': 18,\n", - " 'SEX': 'F',\n", - " 'BIRTHDATE': None,\n", - " 'SALARY': 52750.0,\n", - " 'BONUS': 1000.0,\n", - " 'COMM': 4220.0},\n", - " {'EMPNO': '000020',\n", - " 'FIRSTNME': 'MICHAEL',\n", - " 'MIDINIT': 'L',\n", - " 'LASTNAME': 'THOMPSON',\n", - " 'WORKDEPT': 'B01',\n", - " 'PHONENO': '3476',\n", - " 'HIREDATE': '10/10/73',\n", - " 'JOB': 'MANAGER',\n", - " 'EDLEVEL': 18,\n", - " 'SEX': 'M',\n", - " 'BIRTHDATE': '02/02/48',\n", - " 'SALARY': 41250.0,\n", - " 'BONUS': 800.0,\n", - " 'COMM': 3300.0},\n", - " {'EMPNO': '000030',\n", - " 'FIRSTNME': 'SALLY',\n", - " 'MIDINIT': 'A',\n", - " 'LASTNAME': 'KWAN',\n", - " 'WORKDEPT': 'C01',\n", - " 'PHONENO': '4738',\n", - " 'HIREDATE': '04/05/75',\n", - " 'JOB': 'MANAGER',\n", - " 'EDLEVEL': 20,\n", - " 'SEX': 'F',\n", - " 'BIRTHDATE': '05/11/41',\n", - " 'SALARY': 38250.0,\n", - " 'BONUS': 800.0,\n", - " 'COMM': 3060.0},\n", - " {'EMPNO': '000050',\n", - " 'FIRSTNME': 'JOHN',\n", - " 'MIDINIT': 'B',\n", - " 'LASTNAME': 'GEYER',\n", - " 'WORKDEPT': 'E01',\n", - " 'PHONENO': '6789',\n", - " 'HIREDATE': '08/17/49',\n", - " 'JOB': 'MANAGER',\n", - " 'EDLEVEL': 16,\n", - " 'SEX': 'M',\n", - " 'BIRTHDATE': None,\n", - " 'SALARY': 40175.0,\n", - " 'BONUS': 800.0,\n", - " 'COMM': 3214.0},\n", - " {'EMPNO': '000060',\n", - " 'FIRSTNME': 'IRVING',\n", - " 'MIDINIT': 'F',\n", - " 'LASTNAME': 'STERN',\n", - " 'WORKDEPT': 'D11',\n", - " 'PHONENO': '6423',\n", - " 'HIREDATE': '09/14/73',\n", - " 'JOB': 'MANAGER',\n", - " 'EDLEVEL': 16,\n", - " 'SEX': 'M',\n", - " 'BIRTHDATE': '07/07/45',\n", - " 'SALARY': 32250.0,\n", - " 'BONUS': 500.0,\n", - " 'COMM': 2580.0}],\n", - " 'is_done': False,\n", - " 'success': True}" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "creds = DaemonServer(\n", - " host=\"localhost\",\n", - " port=8085,\n", - " user=\"ashedivy\",\n", - " password=\"ashedivy1234567\",\n", - " ignoreUnauthorized=True\n", - ")\n", - "\n", - "\n", - "job = SQLJob()\n", - "res = job.connect(creds)\n", - "query = job.query('select * from sample.employee')\n", - "result = query.run(rows_to_fetch=5)\n", - "result" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
EMPNOFIRSTNMEMIDINITLASTNAMEWORKDEPTPHONENOHIREDATEJOBEDLEVELSEXBIRTHDATESALARYBONUSCOMM
0000010CHRISTINEIHAASA00397801/01/65PRES18FNone52750.01000.04220.0
1000020MICHAELLTHOMPSONB01347610/10/73MANAGER18M02/02/4841250.0800.03300.0
2000030SALLYAKWANC01473804/05/75MANAGER20F05/11/4138250.0800.03060.0
3000050JOHNBGEYERE01678908/17/49MANAGER16MNone40175.0800.03214.0
4000060IRVINGFSTERND11642309/14/73MANAGER16M07/07/4532250.0500.02580.0
\n", - "
" - ], - "text/plain": [ - " EMPNO FIRSTNME MIDINIT LASTNAME WORKDEPT PHONENO HIREDATE JOB \\\n", - "0 000010 CHRISTINE I HAAS A00 3978 01/01/65 PRES \n", - "1 000020 MICHAEL L THOMPSON B01 3476 10/10/73 MANAGER \n", - "2 000030 SALLY A KWAN C01 4738 04/05/75 MANAGER \n", - "3 000050 JOHN B GEYER E01 6789 08/17/49 MANAGER \n", - "4 000060 IRVING F STERN D11 6423 09/14/73 MANAGER \n", - "\n", - " EDLEVEL SEX BIRTHDATE SALARY BONUS COMM \n", - "0 18 F None 52750.0 1000.0 4220.0 \n", - "1 18 M 02/02/48 41250.0 800.0 3300.0 \n", - "2 20 F 05/11/41 38250.0 800.0 3060.0 \n", - "3 16 M None 40175.0 800.0 3214.0 \n", - "4 16 M 07/07/45 32250.0 500.0 2580.0 " - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pd.DataFrame(result['data'])" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "x = input('pw: ')" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'thisismypw'" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "python-sc", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.8" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}