Light weight SQL database designed to manage data in csv format
Project 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
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
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
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 ''
- 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
cosevadb-0.0.3.tar.gz
(9.7 kB
view hashes)