Search code examples
pythonsqlitesqlalchemy

Can't change system default SQLite binary


Using Django and SQLite I want to run most recent SQLite version; most recent SQLite binary, not the SQLite Python library. I have an SQLite binary that is not the system default and can't change the default version.

I'm not using Django's ORM but replaced it with a standalone SQLAlchemy version. Related (but has to do with running the most recent Python SQLite library).


Solution

  • Python can't use the sqlite3 binary directly. It always uses a module which is linked against the sqlite3 shared library. That means you have to follow the instructions in "How to upgrade sqlite3 in python 2.7.3 inside a virtualenv?" to create a version of the pysqlite module in your virtualenv.

    You can then use this import

    from pysqlite2 import dbapi2 as sqlite
    

    to shadow the system's default sqlite module with the new one.

    Another option would be to get Python's source code, compile everything and copy the file sqlite.so into your virtualenv. The drawback of this approach is that it's brittle and hard to repeat by other people.