Skip to main content

Easy Python database interaction

Project description

easy_db

easy_db is a high-level Python library designed to simplify working with databases. The "DataBase" class handles connecting to various types of databases while providing simple methods for common tasks. The underlying database connection and cursor can be used when more precise control is desired.

Goals

  • Make common database tasks simple and easy
  • Intelligently handle different database types
  • Provide intuitive, consistent, Pythonic methods database interaction
  • Provide good performance without requiring polished query code
  • Expose database connection and cursor to users wanting fine-grained control
  • Just get the data into Python so we can use it!

Why use easy_db?

Before easy_db:

import pyodbc
import os

conn = pyodbc.connect(
    r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};' +
    r'DBQ=' + os.path.abspath('MyDatabase.accdb') + ';')
cursor = conn.cursor()
cursor.execute('SELECT * FROM test_table;')
data = cursor.fetchall()
columns = [col[0] for col in cursor.description]
table_data = [dict(zip(columns, row)) for row in data]

# table_data -> [{'column1': value1, 'column2': value2}, {...}, ...]

Using easy_db:

import easy_db

db = easy_db.DataBase('MyDatabase.accdb')
table_data = db.pull('test_table')

# table_data -> [{'column1': value1, 'column2': value2}, {...}, ...]

Quick Start

Let's first connect to a SQLite database.

import easy_db
db = easy_db.DataBase('test_sqlite3_db.db')

Now let's see what tables are available in this database.

tables = db.table_names()

Table columns and types are simple to investigate.

print(db.columns_and_types('example_table'))

Let's pull all of the data from a table. We could start with something like "SELECT * ...", but this is way more fun:

data = db.pull('example_table')

Note that the table/query data is returned as a list of dictionaries with column names as dictionary keys.

  • Pro Tip: If desired, a Pandas dataframe of the same form as the database table can be easily created from this data structure using:
import pandas
df = pandas.DataFrame(data)

Now perhaps we have an Access database and would like to pull in a table from our SQLite database. easy_db makes this simple and gracefully handles the nuances of dealing with the different databases.

db = easy_db.DataBase('test_sqlite3_db.db')
db_2 = easy_db.DataBase('test_access_db.accdb')

db_2.copy_table(db, 'example_table')

The DataBase object can be used as a context manager for running custom SQL. The cursor is provided and the connection runs .commit() and .close() implicitly after the "while" block.

with db as cursor:
    cursor.execute('DELETE * FROM example_table;')

Thanks for checking out easy_db, and please take a look at the methods of the DataBase class if you'd like to see what other capabilities are available!

License

MIT

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

easy_db-0.8.5.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

easy_db-0.8.5-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file easy_db-0.8.5.tar.gz.

File metadata

  • Download URL: easy_db-0.8.5.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.0

File hashes

Hashes for easy_db-0.8.5.tar.gz
Algorithm Hash digest
SHA256 e3194dd94304cd127a16b5af48137adc07d83e7250fe143b834a06b8c1ebd6a1
MD5 a47029259cb8a0f9e43b3aec5c50e4de
BLAKE2b-256 373ccb6f6ce47025e20e7bd890967ef0cea40e3a27f574a4cd003421153957e1

See more details on using hashes here.

File details

Details for the file easy_db-0.8.5-py3-none-any.whl.

File metadata

  • Download URL: easy_db-0.8.5-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.0

File hashes

Hashes for easy_db-0.8.5-py3-none-any.whl
Algorithm Hash digest
SHA256 8aa93cdf5738f24d6e4196b7a519d5af6ea2abf761686a1768f91785fe9035e2
MD5 7e6369feddfbcf0982d126cf6d097e4f
BLAKE2b-256 39dd6519510820d47d29afa30c345664225a40bd920c358aeefede6634ce29c2

See more details on using hashes here.

Supported by

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