Metadata-Version: 2.4
Name: pysqlite3
Version: 0.6.1
Summary: DB-API 2.0 interface for Sqlite 3.x
Author-email: Charles Leifer <coleifer@gmail.com>
Project-URL: Repository, https://github.com/coleifer/pysqlite3
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: C
Classifier: Topic :: Database
Classifier: Topic :: Database :: Front-Ends
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

pysqlite3
=========

**Note:** moving forward, [cysqlite](https://github.com/coleifer/cysqlite) ([docs](https://cysqlite.readthedocs.io/))
is where all new development is happening for packaging a SQLite driver as a
self-contained package. **End note**

This library takes the SQLite module from Python 3 and packages it as a
separately-installable module.

This may be useful for creating SQLite modules capable of working with other
versions of SQLite (via the amalgamation option).

Additional features:

* User-defined window functions (requires SQLite >= 3.25)
* Flags and VFS an be specified when opening connection
* Incremental BLOB I/O, [bpo-24905](https://github.com/python/cpython/pull/271)
* Improved error messages, [bpo-16379](https://github.com/python/cpython/pull/1108)
* Simplified detection of DML statements via `sqlite3_stmt_readonly`.
* Sqlite native backup API (also present in standard library 3.7 and newer).

A completely self-contained binary package (wheel) is available starting with
version 0.6.0. This package contains the latest release of SQLite compiled with
numerous extensions, and requires no external dependencies.

If you prefer to build yourself or link against the system `libsqlite3` then a
source distribution is also available on PyPI.

pysqlite3 with statically-linked sqlite3
----------------------------------------

Install a wheel using `pip`:

```
$ pip install pysqlite3
```

pysqlite with system sqlite3
----------------------------

If you intend to use the system SQLite, you can install with:

```
$ pip install --no-binary pysqlite3
```

Alternatively you can clone or download the repo and use `setup.py` to
build `pysqlite3` linked against the system SQLite:

```
$ python setup.py build
```

Building a statically-linked library
------------------------------------

In order to build a statically-linked library locally you will need the sqlite
amalgamation sources inside the root of the git checkout. These can be easily
obtained by running a helper script:

```
# This will download sqlite3.c and sqlite3.h into your checkout.
$ python build-scripts/fetch_source.py
```

Now you can compile the extension:

```
$ python setup.py build
```

To build `pysqlite3` statically-linked against a particular version of SQLite,
you need to obtain the SQLite3 source code and copy `sqlite3.c` and `sqlite3.h`
into the source tree.

```
# Download the latest release of SQLite source code and build the source
# amalgamation files (sqlite3.c and sqlite3.h).
$ wget https://www.sqlite.org/src/tarball/sqlite.tar.gz?r=release \
    -O sqlite.tar.gz
$ tar xzf sqlite.tar.gz
$ cd sqlite/
$ ./configure
$ make sqlite3.c

# Copy the sqlite3 amalgamation files into the root of the pysqlite3 checkout
# and run build_static + build:
$ cp sqlite/sqlite3.[ch] pysqlite3/
$ cd pysqlite3
$ python setup.py build
```

You now have a statically-linked, completely self-contained `pysqlite3`.
