Démarrage Rapide
# 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__}')"
# 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 .
# 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
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 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
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 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é
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.