SQLite Database Demo
by anhnx000
This project demonstrates the usage of SQLite database with async support in a FastMCP application. It provides a type-safe database context management and proper connection lifecycle handling.
View on GitHub
Last updated: N/A
SQLite Database Demo
This project demonstrates the usage of SQLite database with async support in a FastMCP application.
Features
- Async SQLite database operations using
aiosqlite
- Automatic database initialization with sample data
- Type-safe database context management
- Proper connection lifecycle handling
Prerequisites
- Python 3.7+
- pip (Python package installer)
Installation
- Clone this repository
- Install the required dependencies:
pip install -r requirements.txt
Project Structure
server.py
: Main FastMCP server implementation with database context managementdatabase.py
: SQLite database implementation with async supportdemo.db
: SQLite database file (created automatically on first run)
Database Schema
The demo database includes a users
table with the following structure:
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL
)
Sample data is automatically inserted on first run:
- John Doe ([email protected])
- Jane Smith ([email protected])
Usage
- Start the server:
python server.py
-
The database will be automatically initialized with the sample data on first run.
-
Use the
query_db
tool to retrieve data from the database.
Database Operations
The Database
class provides the following methods:
connect()
: Creates a new database connection and initializes the schemaquery()
: Executes a sample query to retrieve all usersdisconnect()
: Closes the database connection
Customization
To modify the database schema or add new tables:
- Edit the
_init_db()
method indatabase.py
- Add new methods to
Database
class for custom queries - Update the
query_db
tool inserver.py
to use new methods
Error Handling
The database implementation includes:
- Automatic connection cleanup on server shutdown
- Proper async context management
- Type safety with Python type hints
Dependencies
- aiosqlite>=0.19.0: Async SQLite database driver
- pandas>=2.0.0: Data manipulation library
- numpy>=1.24.0: Numerical computing library