Metadata-Version: 2.1
Name: cosevadb
Version: 0.0.3
Summary: Light weight SQL database designed to manage data in csv format
Home-page: https://github.com/ppml38/cosevadb
Author: Prakash Maria Liju P
Author-email: ppml38@gmail.com
License: UNKNOWN
Description: # CosevaDB - Comma Separated Values DB
        CosevaDB is a light weight SQL database designed to store, retrieve and manage data in csv format.
        
        Targets are,
        - Apps that require SQL DB or external DB server
        - Apps that need lightweight replacement for under-utilised heavy-weight DBs such as oracle, MySQL
        - Those who need a SQL processor and DB to manage existing csv data files
        
        View detailed description on [www.github.com/ppml38/cosevadb](www.github.com/ppml38/cosevadb)
        
        ### Features:
        - Written purely in python
        - No external dependencies
        
        Its a best practice to organise folders and csv files i.e., Databases and tables in below structure
        ```
        database_name/
              table_name.csv
              table_header.csv
              ...
        ```
        And to query the database like below
        ```python
        cosevadb.query("select name from path/to/database_name/table_name.csv, path/to/database_name/table_header.csv where role='Manager' & salary >= 5000")
        ```
        
        However it is not mandatory to follow. you can pass the path of any csv file to parse.
        
        ### How to install
        ```
        pip install cosevadb
        ```
        
        ### Usage
        ```python
        from cosevadb import cosevadb
        cosevadb.query("select name,age from data/passengers.csv,data/header.csv where native='USA'")
        ```
        ### Return format
        ```
        [sqlcode,'<message>',[result list / empty list]]
        ```
        ### SQL return codes
        | SQL Code | Description |
        | --- | --- |
        | 1 | Empty result set |
        | 0 | **Success** with atleast one result |
        | -2 |  Unexpected character on position \<index\> |
        | -3 |  Unexpected character on where clause position \<index\> |
        | -4 |  Unsupported operator in where clause |
        | -5 |  Non numeric operand with arithmatic operator \<operator\> |
        | -6 | Non boolean operand(LHS) with logical operator \<operator\> |
        | -7 | Non boolean operand(RHS) with logical operator \<operator\> |
        | -8 | Operator ! must be followed by = |
        | -9 | Unbalanced paranthesis on LHS of operator \<operator\> |
        | -10 | Unbalanced paranthesis on RHS of operator \<operator\> |
        | -11 |  No field \<fieldname\> found in header file |
        | -12 | Value for variable \<variablename\> is missing in atleast one row |
        | -13 | Where clause condition returns non-boolean result |
        | -14 | Incomplete condition in where clause |
        
        ### Reserved words
        | Keywords |
        | --- |
        | SELECT |
        | FROM |
        | WHERE |
        
        ### Operators supported
        | Operator type | Operators |
        | --- | --- |
        | Arithmatic operators | +, -, *, /, % |
        | Comparison operators | >, <, >=, <=, =, != |
        | Logical operators | &, \| |
        
        ### Operator precedence (in order from high to low)
        | Operator precedence |
        | :---: |
        | \% |
        | \/ |
        | \* |
        | + |
        | \- |
        | <,<= |
        | \>,>= |
        | != |
        | = |
        | & |
        | \| |
        
        ### File formats
        Comma seperated value(.csv) files.
        
        ### Instructions
        * String values should be within '<string>'
        * A file with headers(Comma separated) should be passed along with csv data file
        * As of now only select operations implemented
        * Comparison operator '=' is used instead of '=='
        * **Expression evaluation will use BODMAS as you studied in school. i.e., It has individual operator precedence unlike python or java. (ex): '9-7+1' will result '1' where python eval() will return 3**
        
        ### Licence
        MIT Licence. Contributions are welcome
        
Platform: UNKNOWN
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
