Skip to main content

pypi-to-sqlite

PyPI Changelog Tests License

Load data about Python packages from PyPI into SQLite

Installation

Install this tool using pip:

pip install pypi-to-sqlite

Usage

To create a SQLite database with details of one or more packages, run:

pypi-to-sqlite pypi.db datasette sqlite-utils

You can also process JSON that you have previously saved to disk like so:

curl -o datasette.json https://pypi.org/pypi/datasette/json
pypi-to-sqlite pypi.db -f datasette.json

The tool will create three tables: packages, versions and releases. The full table schema is shown below.

To create the tables with a prefix, use --prefix prefix. For example:

pypi-to-sqlite pypi.db datasette --prefix pypi_

This will create tables called pypi_packages, pypi_versions and pypi_releases.

Demo

You can see examples of tables created using this tool running in Datasette here:

Database schema

CREATE TABLE [packages] (
   [name] TEXT PRIMARY KEY,
   [summary] TEXT,
   [classifiers] TEXT,
   [description] TEXT,
   [author] TEXT,
   [author_email] TEXT,
   [description_content_type] TEXT,
   [home_page] TEXT,
   [keywords] TEXT,
   [license] TEXT,
   [maintainer] TEXT,
   [maintainer_email] TEXT,
   [package_url] TEXT,
   [platform] TEXT,
   [project_url] TEXT,
   [project_urls] TEXT,
   [release_url] TEXT,
   [requires_dist] TEXT,
   [requires_python] TEXT,
   [version] TEXT,
   [yanked] INTEGER,
   [yanked_reason] TEXT
);
CREATE TABLE [versions] (
   [id] TEXT PRIMARY KEY,
   [package] TEXT REFERENCES [packages]([name]),
   [name] TEXT
);
CREATE TABLE [releases] (
   [md5_digest] TEXT PRIMARY KEY,
   [package] TEXT REFERENCES [packages]([name]),
   [version] TEXT REFERENCES [versions]([id]),
   [packagetype] TEXT,
   [filename] TEXT,
   [comment_text] TEXT,
   [digests] TEXT,
   [has_sig] INTEGER,
   [python_version] TEXT,
   [requires_python] TEXT,
   [size] INTEGER,
   [upload_time] TEXT,
   [upload_time_iso_8601] TEXT,
   [url] TEXT,
   [yanked] INTEGER,
   [yanked_reason] TEXT
);

pypi-to-sqlite --help

Usage: pypi-to-sqlite [OPTIONS] DB_PATH [PACKAGE]...

  Load data about Python packages from PyPI into SQLite

  Usage example:

      pypi-to-sqlite pypy.db datasette sqlite-utils

  Use -f to load data from a JSON file instead:

      pypi-to-sqlite pypy.db -f datasette.json

  Created tables will be packages, versions and releases

  To create tables called pypi_packages, pypi_versions, pypi_releases use
  --prefix pypi_:

      pypi-to-sqlite pypy.db datasette sqlite-utils --prefix pypi_

Options:
  --version            Show the version and exit.
  -f, --file FILENAME  Import JSON from this file
  -d, --delay FLOAT    Wait this many seconds between requests
  --prefix TEXT        Prefix to use for the created database tables
  --help               Show this message and exit.

Development

To contribute to this tool, first checkout the code. Then create a new virtual environment:

cd pypi-to-sqlite
python -m venv venv
source venv/bin/activate

Now install the dependencies and test dependencies:

pip install -e '.[test]'

To run the tests:

pytest

Metadata

Release files for pypi-to-sqlite 0.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pypi-to-sqlite 0.2.3
File Size Uploaded Provenance Actions
pypi-to-sqlite-0.2.3.tar.gz 9.0 kB Without provenance Details for pypi-to-sqlite-0.2.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pypi-to-sqlite 0.2.3
File Interpreter ABI Platform Actions
pypi_to_sqlite-0.2.3-py3-none-any.whl Python 3 none any Details for pypi_to_sqlite-0.2.3-py3-none-any.whl

Total release size: 17.7 kB

Release files / pypi-to-sqlite-0.2.3.tar.gz

Download URL pypi-to-sqlite-0.2.3.tar.gz
Size 9.0 kB
Tags Source
SHA-256 checksum
How to use checksums
d6866be63e347d5733d259e0708ffc6e69409744203c82e438ee3bbda44a4e20
BLAKE2b-256 checksum
How to use checksums
1f29cf97b1c72cb1aab81917e44d52e34ba3ffbb7efdfa2125ccf7cedc852602
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.2 CPython/3.11.8

Release files / pypi_to_sqlite-0.2.3-py3-none-any.whl

Download URL pypi_to_sqlite-0.2.3-py3-none-any.whl
Size 8.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
20f720cecb4920b7456deb0c718cefb321fb5124f7058fe1b203840a64ec98c0
BLAKE2b-256 checksum
How to use checksums
edb1b417733d3808d635e5b6aa29ec829df81eddfebaf2f7b37379c17a6a3106
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.2 CPython/3.11.8

Security for pypi-to-sqlite 0.2.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page