Skip to main content

This is a database utility tool that can populate random data based on your schema or can import custom CSV data.

Project description

Doctor Data (beta)

This is a beta version of this tool. Please submit any issues here

usage: dr-data [-h] [-transplant] [-source SOURCE] [-destination DESTINATION] [-inject] [-rows ROWS] [-biopsy] [-export EXPORT] [-cleanse] [-config CONFIG]

Dr. Data is a database utility tool that can populate random data based on your schema or can import custom CSV data. See options below

optional arguments:
  -h, --help                    show this help message and exit
  -transplant                  Insert one or all CSV files to table
  -source SOURCE        Used in conjuctions with `transplant` The CSV source file or directory. if directory, csv filenames need to match table names
  -destination DESTINATION
                                    Used in conjuctions with `transplant` and `source`. if `source` is a file. destination TABLE is required
  -inject                         Inserts one or many randomly regenerated rows
  -rows ROWS               Used in conjuction with `inject`.How may rows do you want to load per table in the database, default is set in configuration
  -biopsy                       Explicitly exports a schema and table insertion-order JSON files
  -export EXPORT        Used in conjunction with `biopsy. The directory PATH to export the JSON files
  -cleanse                     Truncates all the values in the database, WARNING this will delete all data!
  -config CONFIG          configuration file or set DRDATA_CONFIG=<path> env variable

Prerequisite

  • python 3.9.1
  • Works currently only with PostgreSQL 13+

Installation

pip install dr-data

Usage

  1. Create a dr_data.json file with these values and set DRDATA_CONFIG=<path> env variable or using -config=<path> parameter
{
   "db":{
      "host":"localhost",
      "database":"<db_name>",
      "user":"<db_user>",
      "password":"<db_password>",
      "port":"5432"
   },
   "defaults": {
      "rows": 25
    }
}
  1. Then run one of the procedure commands (-inject, -transplant, -cleanse, -biopsy)

CLI Examples

Example 1: -inject random row data into the database

dr-data -inject # generates a default of 25 rows
dr-data -inject -rows=100

Example 2: -transplant directory with CSV files (multiple CSV files) Note: CSV columns need to be named the name as the database column names.

dr-data -transplant -source=/path/to/source/directory

Example 3: -transplant one CSV files (single CSV file) Note: CSV columns need to be named the name as the database column names.

dr-data -transplant -source=</path/to/source/file.csv> -destination=<table_name>

Example 4: -biopsy the database, produces a schema.json and insertion-order-schema.json files

dr-data -biopsy -export=</path/to/export/directory/>

Example 5: -cleanse the database of all data. Warning: This can't be undone.

dr-data -cleanse

SDK Examples

Example 1: Using Biopsy class

from dr_data.biopsy import Biopsy

configuration = {...}
schema = Biopsy(configuration).execute_cmd()

Example 2: Using Inject class

from dr_data.biopsy import Biopsy
from dr_data.inject import Inject

configuration = {...}
rows = 25
schema = Biopsy(configuration).execute_cmd()
inject = Inject(schema, configuration)
inject.execute_cmd(rows)

Example 3: Using Transplant class (file import)

from dr_data.transplant import Transplant

configuration = {...}
source_file = "/path/to/foobar.csv"
destination_table = "foobar"
transplant = Transplant(configuration)
transplant.execute_file_cmd(source_file, destination_table)

Example 4: Using Transplant class (directory import)

from dr_data.transplant import Transplant

configuration = {...}
source_directory= "/path/to/foobar"
transplant = Transplant(configuration)
transplant.execute_directory_cmd(source_directory)

Example 5: Using Randoms class (optional usage)

from dr_data.randoms import Randoms

random_hash = Randoms.get_hash(10) # get random hash value
random_datetime = Randoms.get_datetime() # get random datetime
random_datetime_with_timezone = Randoms.get_datetime_with_timezone() # get random datetime with timezone
random_number = Randoms.get_datetime_with_timezone() # get random number
random_boolean = Randoms.get_boolean() # get random boolean

Development Setup

git clone https://github.com/sunnysidesounds/dr_data
cd dr_data
python -m venv .
venv/bin/pip install -e .
venv/bin/dr-data -h

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

dr_data-1.0.1-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file dr_data-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: dr_data-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for dr_data-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f45006c33f82e44ad594b2722e53e00380aa0797963e9fcb6f2ca4980df3d80e
MD5 e919fcb6524aebc8dc767b3ad011fefa
BLAKE2b-256 3728ef2aa76c1d095ec66a485eff63838f398a6d1f9dcb79b858d85daaaeb62b

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