A python library to dump table schema of a SQLite database file.
Project description
sqliteschema
Summary
Python library to dump table schema of a SQLite database file.
Installation
pip install sqlitestructure
Usage
Full example can be found at examples/get_table_schema.py
Extract SQLite Schema
for verbosity_level in range(2):
print("===== get table schema: verbosity level {} =====".format(
verbosity_level))
extractor = sqliteschema.SqliteSchemaExtractor(
sqlite_db_path, verbosity_level, "table")
for table_name in extractor.get_table_name_list():
print("{:s} {}".format(
table_name,
extractor.get_table_schema(table_name)))
print()
===== get table schema: verbosity level 0 =====
sampletable0 ['attr_a', 'attr_b']
sampletable1 ['foo', 'bar', 'hoge']
constraints ['primarykey_id', 'notnull_value', 'unique_value']
===== get table schema: verbosity level 1 =====
sampletable0 OrderedDict([('attr_a', 'INTEGER'), ('attr_b', 'INTEGER')])
sampletable1 OrderedDict([('foo', 'INTEGER'), ('bar', 'REAL'), ('hoge', 'TEXT')])
constraints OrderedDict([('primarykey_id', 'INTEGER'), ('notnull_value', 'REAL'), ('unique_value', 'INTEGER')])
Dump SQLite Schema Table
for verbosity_level in range(2):
print("===== dump table: verbosity level {} =====".format(
verbosity_level))
extractor = sqliteschema.SqliteSchemaExtractor(
sqlite_db_path, verbosity_level, "table")
print(extractor.dumps())
===== dump table: verbosity level 0 =====
.. table:: sampletable0
============== =========
Attribute name Data type
============== =========
attr_a INTEGER
attr_b INTEGER
============== =========
.. table:: sampletable1
============== =========
Attribute name Data type
============== =========
foo INTEGER
bar REAL
hoge TEXT
============== =========
.. table:: constraints
============== =========
Attribute name Data type
============== =========
primarykey_id INTEGER
notnull_value REAL
unique_value INTEGER
============== =========
===== dump table: verbosity level 1 =====
.. table:: sampletable0
+--------------+---------+-----------+--------+------+-----+
|Attribute name|Data type|Primary key|Not NULL|Unique|Index|
+==============+=========+===========+========+======+=====+
|attr_a |INTEGER | | | | |
+--------------+---------+-----------+--------+------+-----+
|attr_b |INTEGER | | | | |
+--------------+---------+-----------+--------+------+-----+
.. table:: sampletable1
+--------------+---------+-----------+--------+------+-----+
|Attribute name|Data type|Primary key|Not NULL|Unique|Index|
+==============+=========+===========+========+======+=====+
|foo |INTEGER | | | |X |
+--------------+---------+-----------+--------+------+-----+
|bar |REAL | | | | |
+--------------+---------+-----------+--------+------+-----+
|hoge |TEXT | | | |X |
+--------------+---------+-----------+--------+------+-----+
.. table:: constraints
+--------------+---------+-----------+--------+------+-----+
|Attribute name|Data type|Primary key|Not NULL|Unique|Index|
+==============+=========+===========+========+======+=====+
|primarykey_id |INTEGER |X | | | |
+--------------+---------+-----------+--------+------+-----+
|notnull_value |REAL | |X | | |
+--------------+---------+-----------+--------+------+-----+
|unique_value |INTEGER | | |X | |
+--------------+---------+-----------+--------+------+-----+
Dump Schema Text
for verbosity_level in range(6):
print("===== dump text: verbosity level {} =====".format(
verbosity_level))
extractor = sqliteschema.SqliteSchemaExtractor(
sqlite_db_path, verbosity_level, "text")
print(extractor.dumps())
===== dump text: verbosity level 0 =====
sampletable0
sampletable1
constraints
===== dump text: verbosity level 1 =====
sampletable0 (attr_a, attr_b)
sampletable1 (foo, bar, hoge)
constraints (primarykey_id, notnull_value, unique_value)
===== dump text: verbosity level 2 =====
sampletable0 (attr_a INTEGER, attr_b INTEGER)
sampletable1 (foo INTEGER, bar REAL, hoge TEXT)
constraints (primarykey_id INTEGER, notnull_value REAL, unique_value INTEGER)
===== dump text: verbosity level 3 =====
sampletable0 (attr_a INTEGER, attr_b INTEGER)
sampletable1 (foo INTEGER, bar REAL, hoge TEXT)
constraints (primarykey_id INTEGER PRIMARY KEY, notnull_value REAL NOT NULL, unique_value INTEGER UNIQUE)
===== dump text: verbosity level 4 =====
sampletable0 (
attr_a INTEGER,
attr_b INTEGER
)
sampletable1 (
foo INTEGER,
bar REAL,
hoge TEXT
)
constraints (
primarykey_id INTEGER PRIMARY KEY,
notnull_value REAL NOT NULL,
unique_value INTEGER UNIQUE
)
===== dump text: verbosity level 5 =====
sampletable0 (
attr_a INTEGER,
attr_b INTEGER
)
sampletable1 (
foo INTEGER,
bar REAL,
hoge TEXT
)
CREATE INDEX sampletable1_hoge_index ON sampletable1('hoge')
CREATE INDEX sampletable1_foo_index ON sampletable1('foo')
constraints (
primarykey_id INTEGER PRIMARY KEY,
notnull_value REAL NOT NULL,
unique_value INTEGER UNIQUE
)
Dependencies
Python 2.7+ or 3.3+
Test dependencies
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
sqliteschema-0.8.0.tar.gz
(11.8 kB
view hashes)
Built Distribution
Close
Hashes for sqliteschema-0.8.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff933e001f04bb232c2409df37008248c4fb8f8d4647c48e112a1facc8c85a7d |
|
MD5 | 7a619ee30035e4c83fee9e1abab996e4 |
|
BLAKE2b-256 | 5ab982c76b7245b59072f1897e3de57630fcbdf4f078ce8cc12bcb14c375c01a |