GSQL Database

Interface Python avancée pour SQLite avec shell interactif, cache intelligent et outils de productivité.

3.1.2 Version
8 Modules
1k+ Téléchargements
Python SQLite Mobile
Démarrer Maintenant Voir le Code
GSQL est en version bêta active. Quelques bugs connus - voir FAQ pour les solutions.

Démarrage Rapide

Installation via pip (recommandé)
# Mettre à jour pip
python -m pip install --upgrade pip

# Installer GSQL
pip install gsql

# Vérifier l'installation
python -c "import gsql; print(f'GSQL version: {gsql.__version__}')"
Installation via Conda
# Depuis le canal gopu-inc
conda install -c gopu-inc gsql

# Depuis les sources
git clone https://github.com/gopu-inc/gsql
cd gsql
pip install -e .
Shell Interactif
# Lancer le shell GSQL
gsql

# Commandes disponibles
gsql> .help           # Afficher l'aide
gsql> .tables         # Lister les tables
gsql> SELECT * FROM sqlite_master;
gsql> .exit           # Quitter
API Python
from gsql.database import Database

# Connexion (en mémoire pour les tests)
db = Database(db_path=":memory:")

# Exécuter une requête
result = db.execute("""
    CREATE TABLE users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL
    )
""")

print("Table créée avec succès")
Exemple Complet
"""
Exemple complet d'utilisation de GSQL
avec gestion des transactions (workaround)
"""
from gsql.database import Database

def main():
    # 1. Initialisation
    db = Database(
        db_path=":memory:",
        enable_wal=True,
        auto_recovery=True
    )
    
    # 2. Création de tables
    db.execute("""
        CREATE TABLE IF NOT EXISTS products (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            name TEXT NOT NULL,
            price REAL CHECK(price >= 0),
            stock INTEGER DEFAULT 0
        )
    """)
    
    # 3. Insertion de données
    db.execute(
        "INSERT INTO products (name, price, stock) VALUES (?, ?, ?)",
        ["Laptop", 999.99, 10]
    )
    
    # 4. Transaction (workaround pour bug connu)
    try:
        db.execute("BEGIN IMMEDIATE TRANSACTION")
        db.execute("UPDATE products SET stock = stock - 1 WHERE id = 1")
        db.execute("INSERT INTO logs (action) VALUES ('sale')")
        db.execute("COMMIT")
        print("Transaction réussie")
    except Exception as e:
        db.execute("ROLLBACK")
        print(f"Transaction échouée: {e}")
    
    # 5. Requête avec cache
    result = db.execute(
        "SELECT * FROM products WHERE stock > ?",
        params=[0],
        use_cache=True
    )
    
    print(f"{result['count']} produits en stock")
    db.close()

if __name__ == "__main__":
    main()

Fonctionnalités

Shell Interactif

Interface CLI avec auto-complétion, historique et coloration syntaxique pour une productivité maximale.

Cache Intelligent

Cache LRU optimisé qui accélère les requêtes SELECT répétitives jusqu'à 20x.

Compatibilité SQLite

Utilisez vos bases SQLite existantes sans modification. GSQL est une surcouche transparente.

Commandes Spéciales

Commandes intégrées: .tables, .schema, STATS, VACUUM, HELP pour une gestion simplifiée.

FAQ & Dépannage

Comment gérer les transactions avec le bug actuel ?

L'API native db.begin_transaction() a des bugs connus. Utilisez ce workaround :

# ❌ NE PAS UTILISER
# tid = db.begin_transaction()

# ✅ UTILISER CE WORKAROUND
db.execute("BEGIN IMMEDIATE TRANSACTION")
try:
    # vos opérations...
    db.execute("COMMIT")
except:
    db.execute("ROLLBACK")
Le shell plante avec certaines requêtes

Le parser peut être fragile avec les guillemets complexes. Solutions :

  • Évitez les guillemets imbriqués dans le shell
  • Utilisez un script Python pour les requêtes complexes
  • Écrivez vos requêtes dans un fichier .sql séparé
Comment contribuer au projet ?

1. Signaler un bug : Ouvrez une issue GitHub avec un exemple minimal reproductible

2. Proposer une amélioration : Discutez d'abord dans une issue

3. Soumettre un correctif : Fork → Branche → Code → Tests → Pull Request

Priorités : corrections des transactions, stabilisation du shell, documentation.