w3resource

A Complete Guide to SQLite License and usage


SQLite License

SQLite is a widely-used, open-source, self-contained, serverless SQL database engine. One of its standout features is its licensing model. SQLite is released into the public domain, making it free to use, distribute, and modify without restrictions. This unique licensing approach ensures that SQLite is accessible to developers for both personal and commercial purposes.


License Information

SQLite is governed by the Public Domain Dedication. It provides the following rights:

  • Free Usage: SQLite can be used without payment for any purpose.
  • No Restrictions: There are no restrictions on distribution, modification, or usage in proprietary projects.
  • Public Domain Declaration: All code and documentation for SQLite are declared as public domain by the authors.

Additionally, SQLite provides a Warranty of Title under the SQLite License to assure users of its authenticity and ownership.

If your jurisdiction does not recognize the public domain, SQLite offers the following alternative license:

  • Creative Commons Zero (CC0): This license ensures maximum compatibility with legal systems worldwide, effectively granting the same freedoms as the public domain declaration.

Example: Checking SQLite License

You can programmatically access SQLite's license information using the sqlite3 command-line interface or in any application using SQLite.

Code:

# Import the sqlite3 module to interact with SQLite databases
import sqlite3  

# Connect to an in-memory SQLite database
# This is a temporary database that only exists during the program runtime
connection = sqlite3.connect(":memory:")  

# Create a cursor object to execute SQLite commands
cursor = connection.cursor()  

# Query the SQLite library version and license information
# This uses the PRAGMA command to retrieve the version and compile options
cursor.execute("SELECT sqlite_version();")  # Get the SQLite version
version = cursor.fetchone()[0]             # Fetch the result and extract the version

cursor.execute("PRAGMA compile_options;")  # Retrieve compile-time options
compile_options = cursor.fetchall()        # Fetch all compile options as a list of tuples

# Display the retrieved SQLite version
print(f"SQLite Version: {version}")  

# Display the compile-time options, which include license information
print("Compile-Time Options:")  
for option in compile_options:  
    print(f"- {option[0]}")  # Each compile option is displayed

# Close the cursor and connection to release resources
cursor.close()  
connection.close()

Output:

SQLite Version: 3.41.2
Compile-Time Options:
- ATOMIC_INTRINSICS=0
- COMPILER=msvc-1916
- DEFAULT_AUTOVACUUM
- DEFAULT_CACHE_SIZE=-2000
- DEFAULT_FILE_FORMAT=4
- DEFAULT_JOURNAL_SIZE_LIMIT=-1
- DEFAULT_MMAP_SIZE=0
- DEFAULT_PAGE_SIZE=4096
- DEFAULT_PCACHE_INITSZ=20
- DEFAULT_RECURSIVE_TRIGGERS
- DEFAULT_SECTOR_SIZE=4096
- DEFAULT_SYNCHRONOUS=2
- DEFAULT_WAL_AUTOCHECKPOINT=1000
- DEFAULT_WAL_SYNCHRONOUS=2
- DEFAULT_WORKER_THREADS=0
- ENABLE_COLUMN_METADATA
- ENABLE_FTS5
- ENABLE_GEOPOLY
- ENABLE_RTREE
- MALLOC_SOFT_LIMIT=1024
- MAX_ATTACHED=10
- MAX_COLUMN=2000
- MAX_COMPOUND_SELECT=500
- MAX_DEFAULT_PAGE_SIZE=8192
- MAX_EXPR_DEPTH=1000
- MAX_FUNCTION_ARG=127
- MAX_LENGTH=1000000000
- MAX_LIKE_PATTERN_LENGTH=50000
- MAX_MMAP_SIZE=0x7fff0000
- MAX_PAGE_COUNT=1073741823
- MAX_PAGE_SIZE=65536
- MAX_SQL_LENGTH=1000000000
- MAX_TRIGGER_DEPTH=1000
- MAX_VARIABLE_NUMBER=250000
- MAX_VDBE_OP=250000000
- MAX_WORKER_THREADS=8
- MUTEX_W32
- SYSTEM_MALLOC
- TEMP_STORE=1
- THREADSAFE=1

Explanation:

    1. Importing sqlite3:

    • The sqlite3 module is imported to work with SQLite databases.

    2. Connecting to the Database:

    • A connection to an in-memory SQLite database (:memory:) is established. This is a temporary database that does not persist after the program ends.

    3. Querying the SQLite Version:

    • The sqlite_version() function retrieves the version of the SQLite library being used.

    4. Retrieving Compile-Time Options:

    • The PRAGMA compile_options query retrieves information about how SQLite was compiled, which includes details about the license and other features.

    5. Displaying Results:

    • The SQLite version and compile-time options are printed to the console. These options confirm the use of the public domain license or CC0 compliance.

    6. Closing Resources:

    • The cursor and connection are closed to free resources and maintain proper database management.

Additional Information

  • Use in Proprietary Software: SQLite's public domain nature makes it suitable for use in proprietary, commercial, or open-source software.
  • Warranty of Title: SQLite developers provide assurance that the code is original and free of intellectual property disputes.
  • Professional Support: Although SQLite is free, professional support is available from the SQLite Consortium.

Practical Guides to SQLite Snippets and Examples.



Follow us on Facebook and Twitter for latest update.