Skip to main content

use PRIMARY KEY and UNIQUE in CSV

Project description

csvkey

For a very limited situation such that you don't need performance and want to use CSV as database.

Example

from csvkey import Connection
import pandas as pd
import numpy as np


# prepare DataFrame
data = pd.DataFrame()
data['A'] = pd.Series([1,2,3], dtype='int')
data['B'] = pd.Series([4,5,6], dtype='float32')
data['C'] = pd.Series([7,8,9], dtype='float64')


# register database
conn = Connection()
conn.initialize(data, r'C:\TEST\database.csv',
                primary=['A', 'B'],
                unique=['C'],
                notnull=['C'])
# database.csv and the configuration file (default: csv.conf) are generated in C:\TEST\
# set 'A' and 'B' columns as a primary key
# values in 'C' column must be unique and not NaN


# connect to database.csv
conn.connect(r'C:\TEST\database.csv')
conn.df.dtypes # dtypes are preserved


# change values in conn.df
conn.df.loc[0, 'C'] = 8
conn.commit() # raise ValueError because 8 is not unique
conn.df.loc[0, 'C'] = np.nan 
conn.commit() # raise ValueError because NaN is not allowed in 'C'
conn.df.loc[0, 'C'] = -1
conn.commit() # OK
conn.df.loc[2, ['A', 'B']] = [1, 4]
conn.commit() # raise ValueError because primary keys are duplicated

Installation

pip install csvkey

Requirements

pandas
pyyaml

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

csvkey-0.0.3.tar.gz (2.9 kB view details)

Uploaded Source

Built Distribution

csvkey-0.0.3-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

Details for the file csvkey-0.0.3.tar.gz.

File metadata

  • Download URL: csvkey-0.0.3.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.6

File hashes

Hashes for csvkey-0.0.3.tar.gz
Algorithm Hash digest
SHA256 0ae3612b7066066ea541832a4500c48ab2b023d72dfa0a964b478f80303f4eb0
MD5 5e1f35b2d44015519cdfceda4e74cdcb
BLAKE2b-256 94037fbe2996fc8426c5595eff5709f643331cc74d47a73a1d7274dfc5ac60d7

See more details on using hashes here.

File details

Details for the file csvkey-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: csvkey-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 4.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.6

File hashes

Hashes for csvkey-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6ba6bcbee85cc0b957a747bad69f36b35d1abe7bc1831d5f84833e2dd2bca0ea
MD5 033f8333d43c8631833403ce2c5b2ee4
BLAKE2b-256 82bb70dae2dabf053bbc29b3ac065d839fce27ebd63eeb7b325b9397a4a44e3f

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