Skip to main content

database-extractor

Description

This project intends to create a python package to extract the content of a database and convert it into a python object. For the moment, this package can only extract the content of SQLite3 databases.

In this implementation, a row is represented as a python dictionary object.

Since the goal of this package is to extract the content of a database, BLOB fields will be decoded if possible if they represent a protobuf or a json. In order to facilitate the data readability, nested protobuf/json objects will be converted to unidimensional objects (cf. image below).

Example of nested-object conversion to unidimensional object

Export format

A database can be exported as a JSON or as an XML at the moment. A short exemple of both implementation is given below.

XML

<?xml version='1.0' encoding='utf-8'?>
<database name="resources/dummy.db">
    <table name="Tab1">
        <row>
            <column type="str" key="userId" value="C2V6" />
            <column type="NoneType" key="convId" value="None" />
            <column type="str" key="sent" value="0" />
        </row>
    </table>
    <table name="Tab2">
        <row>
            <column type="str" key="convId" value="uaz-57" />
            <column type="int" key="messageId" value="1" />
            <column type="str" key="extKey" value="chat" />
        </row>
        <row>
            <column type="str" key="convId" value="r2d-2a" />
            <column type="int" key="messageId" value="3" />
            <column type="str" key="extKey" value="27FwAPH4QapLXF5fhDcs7" />
        </row>
        <row>
            <column type="str" key="convId" value="av7-dp" />
            <column type="int" key="messageId" value="5" />
            <column type="bytes" key="extKey" value="0000040f" />
        </row>
    </table>
</database>

JSON

{
    "resources/dummy.db": {
        "Tab1": [
            {
                "userId": {
                    "value": "C2V6",
                    "type": "str"
                },
                "convId": {
                    "value": null,
                    "type": "NoneType"
                },
                "sent": {
                    "value": 0,
                    "type": "int"
                }
            }
        ],
        "Tab2": [
            {
                "convId": {
                    "value": "uaz-57",
                    "type": "str"
                },
                "messageId": {
                    "value": 1,
                    "type": "int"
                },
                "extKey": {
                    "value": "chat",
                    "type": "str"
                }
            },
            {
                "convId": {
                    "value": "r2d-2a",
                    "type": "str"
                },
                "messageId": {
                    "value": 3,
                    "type": "int"
                },
                "extKey": {
                    "value": "27FwAPH4QapLXF5fhDcs7",
                    "type": "str"
                }
            },
            {
                "convId": {
                    "value": "av7-dp",
                    "type": "str"
                },
                "messageId": {
                    "value": 5,
                    "type": "int"
                },
                "extKey": {
                    "value": "0000040f",
                    "type": "bytes"
                }
            }
        ]
    }
}

Example

from database_converter.converters.sqlite3.db import SQLite3DatabaseFileConverter
import database_converter.writers.json as json
import database_converter.writers.xml as xml

if __name__ == '__main__':
    # Convert the content of the database into a python object
    extractor = SQLite3DatabaseFileConverter('DB1.db')
    content = extractor.convert()

    # Save as a XML
    xml.write('extraction.xml', content)
    # Save as a JSON
    json.write('extraction.json', content)

Features to implement

  • extractors: sqlite3 WAL

Download files

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

Source Distribution

database_converter-0.0.7.1.tar.gz (145.5 kB view details)

Uploaded Source

Built Distribution

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

database_converter-0.0.7.1-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file database_converter-0.0.7.1.tar.gz.

File metadata

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

File hashes

Hashes for database_converter-0.0.7.1.tar.gz
Algorithm Hash digest
SHA256 caf131acecff0e89d62308dafc5e1fbcf31b39a1d71da8174cc84daded099444
MD5 69886b604a00e9b27f13a091d905f030
BLAKE2b-256 7877ac399c6571981aa6932c69b1634619e54fadbb2e598132339be3db91048c

See more details on using hashes here.

File details

Details for the file database_converter-0.0.7.1-py3-none-any.whl.

File metadata

File hashes

Hashes for database_converter-0.0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6cccb516dd376c053c0ea681fe1b0c606b824ec2e9d6006fe7694e4239704898
MD5 85262572586a8488695b7e11e8e566d6
BLAKE2b-256 67840dc332ec7df93cc57ce6811d245b235a341157059ca698971dd71c7c99ad

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.7.1 This release

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5.1

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

Supported by

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