Metadata-Version: 2.1
Name: sqldbclient
Version: 0.0.1
Summary: A SQL client software package, mainly for use in Jupyter Notebook environment
Home-page: https://example.com
Author: Yuriy Kozhev
Author-email: Yuriy Kozhev <yuriy.kozhev@gmail.com>
License: Copyright (c) 2022 Yuriy Kozhev
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
Project-URL: Homepage, https://example.org
Platform: any
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Provides-Extra: jupyter
License-File: LICENSE

# Sql DB Client

Provides additional functionalities to work with DBMS utilizing mainly 2 powerful packages sqlalchemy and pandas.

The main goal to replace basic SQL client software application (e.g. [DBeaver](https://en.wikipedia.org/wiki/DBeaver)).
Especially helpful for people who are used to work with pandas and its powerful abilities in terms of analytical research.
Designed mainly to use alongside with Jupyter Notebook (i.e. GUI environment but endless abilities of Python and its libraries).

Basically, it is a wrapper around pd.DataFrame().to_sql function and sqlalchemy functionalities such as transaction management
with the following features:
- detailed logging with query execution time collecting (also can be saved to file to keep track of your every action as long as need)
- easy transaction management 
        
        with sql_executor:
            sql_executor.execute_query('CREATE VIEW temp_view AS SELECT 1 AS num')
            temp_view = sql_executor.read_query('SELECT * FROM temp_view')
            ...
- query results management using SQLLite database (i.e. a file near your Python script)
  - UUID for each query run (to easily get any executed query result; to work with one database from different scripts with no need to synchronization)
  - query start and finish time, duration
  - result (a pandas DataFrame for read query)
  
        You do not need to save your select results into csv and excel in order to look at them in the future.
        They will be avaiable as long as you need in your own file-based database.
  
- (optional) pandas DataFrame enhancements in Jupyter (such as displaying DataFrame with all rows and columns and full colwidth by simply calling its one method)
- query pre-processing (e.g. automatically adding set LIMIT value to the end of every select query in order to prevent memory overuse)
- async query execution, you can easily run your query in background

      await sql_async_planner.plan_execution('SELECT 1 AS a')
      result = await sql_async_planner.get_result()
- 
