Skip to main content

SQL-like interface to tabular structured data

Project description

tSQLike

Python package CodeQL

SQL-like interface to tabular structured data

Buy Me A Coffee

Description

tSQLike is a Python3 module that is written with a hope to make tabular data process easier using SQL-like primitives.

Notes

Not that early stage, but still in development: may contain bugs

Usage

from tsqlike import tsqlike

t1 = tsqlike.Table(data=[['h1', 'h2', 'h3', 'h4'],
                        ['a', 'b', 'c', 'd'],
                        ['b', 'c', 'd', 'd'],
                        ['f', 'g', 'h', 'i']],
                   name='first')
t2 = tsqlike.Table().import_list_dicts(data=[{'h1': 1, 'h2': 2, 'h3': 3},
                                            {'h1': 'd', 'h2': 'e', 'h3': 'f'}],
                                       name='second')
t3 = t1.join(t2, on='first.h4 == second.h1').select('*').order_by('second.h2', direction=tsqlike.ORDER_BY_DEC)
t3.write_csv(dialect='unix')

"first.h1", "first.h2", "first.h3", "first.h4", "second.h1", "second.h2", "second.h3"
"b", "c", "d", "d", "d", "e", "f"
"a", "b", "c", "d", "d", "e", "f"

Installation

pip install tsqlike

Functionality

Table class

The main class of the module

Data processing methods

Name Status Description
column_map Apply a function to a column
join Join two Tables (self and table) on an expression *. Complex, but slow
join_lt Light, limited, fast and safe Join, that doesn't use eval()
select Select column(s) from the Table *
select_lt eval()-free version of select
order_by ORDER BY primitive of SQL SELECT to sort the Table by a column
group_by GROUP BY primitive of SQL SELECT to apply aggregate function on a column

Import methods

Name Status Description
import_dict_lists Import a dictionary of lists into Table object
import_list_dicts Import a list of horizontal arranged dictionaries into the Table
import_list_lists Import list(list_1(), list_n()) with optional first row as the header

Export methods

Name Status Description
export_dict_lists Export a dictionary of lists
export_list_dicts Export list of dictionaries
export_list_lists Export list(list_1(), list_n()) with optional first row as the header

Write methods

Name Status Description
write_csv Make CSV from the Table object and write it to a file or stdout
write_json Write JSON into file or STDOUT *
write_json_lt eval()-free version of Table.write_json
write_xml Write XML. NB: Do we need this?

Header manipulation methods

Name Status Description
make_shortnames Return Header with no Dot-prefix of the columns
set_shortnames Remove Dot-prefix of the columns from self/Table header

Private methods

Name Status Description
_redimension Recalculate dimensions of the Table.table

EvalCtrl class

Controls what arguments are available to eval() function

Name Status Description
blacklisted Checks if there is any of the blacklised words in stanza
blacklist_add Add a new word into the black list
blacklist_remove Remove the word from the blacklist

Standalone functions

Name Status Description
open_file Open a file
close_file Close a file
read_json Read JSON file
read_csv Read CSV file
read_xml Read XML. NB: Do we need XML support?
str_to_type Convert a str to a proper type: int, float or bool

WARNING

Methods Table.join(on=), Table.select(where=) and Table.write_json(export_f=), use eval() function to run specified expressions within the program. ANY expression, including one that is potentially DANGEROUS from security point of view, can be passed as the values of the above arguments. It is your duty to ensure correctness and safety of these arguments and EvalCtrl helps to block potentially dangerous function/method names.

Alternatively you can use Table.join_lt(), Table.select_lt() and Table.write_json(). They are significantly less powerful, but do not use eval().

TODO

  • Rework: Table Names, Header Column Names, Dot-Prefixes

Contacts

If you have an idea, a question, or have found a problem, do not hesitate to open an issue or mail me directly: Mikhail Zakharov zmey20000@yahoo.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tsqlike-1.1.5.2.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

tsqlike-1.1.5.2-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

Details for the file tsqlike-1.1.5.2.tar.gz.

File metadata

  • Download URL: tsqlike-1.1.5.2.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for tsqlike-1.1.5.2.tar.gz
Algorithm Hash digest
SHA256 7918146f063c555254f4e58207814dda8e0f8e9bb9d8fd581962b182a7317e56
MD5 b4bcbb1a0997ab2cdae09a2d198c2d5c
BLAKE2b-256 d79bcc943b8069935b71b055edeb7999b249aa5f199d248a5c145b883aba60f4

See more details on using hashes here.

File details

Details for the file tsqlike-1.1.5.2-py3-none-any.whl.

File metadata

  • Download URL: tsqlike-1.1.5.2-py3-none-any.whl
  • Upload date:
  • Size: 12.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for tsqlike-1.1.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cf7736126e9f3b252dac41fc4c93003edc151e4295e794ef5177cda724fc1ab2
MD5 393c05fa05f1926ede6513e07f4c3fda
BLAKE2b-256 d1db72f0f148aa365e07d1160efeb4740da6da4ac2f2f219a5bb27c368538111

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page