URL: https://linuxfr.org/users/jul/journaux/sqlramen-un-remplacement-a-sqlsoup Title: sqlramen un remplacement à sqlsoup Authors: Jul Date: 2025年10月02日T15:54:36+02:00 License: CC By-SA Tags: sqlalchemy et python Score: 7 Alors que je pleurais la disparition de sqlsoup et ré-écrivais pour la 5é fois le code *minimal* pour le remplacer je me suis dit ; tu pourrais offrir un module équivalent. # SQLRamen, un peu comme SQLSoup SQLRamen offre une interface minimaliste au dessus de sqlalchemy pour avoir une console introspective sur une base de données... Ce qui est avec une API différente ce que faisait SQLSoup qui a disparu avec sqlalchemy 2. Le code est minimal et est basé sur [automap](https://docs.sqlalchemy.org/en/stable/orm/extensions/automap.html). ## Installation ``` python -m pip install sqlramen ``` ## Exemple : ```python from sqlramen import SQLRamen db = SQLRamen("sqlite:///../pdca/aide") user = db.query(db.table.user).filter_by(email="j@j.com").one() [ l.message for l in user.comment_collection ] # ['SCAM Manual\r\n\r\nA complete guide to create a guide with scam', # ... # 'future plan', # 'further down'] db.query(db.table.comment.message).join(db.table.comment.user ).filter(db.table.user.email=="j@j.com").all() # same print([l for l in db.table.user.__table__.c]) # [Column('id', INTEGER(), table=, primary_key=True, nullable=False), # Column('pic_file', TEXT(), table=), # Column('name', TEXT(), table=, nullable=False), # Column('email', TEXT(), table=, nullable=False), # Column('secret_token', TEXT(), table=), # Column('secret_password', TEXT(), table=, nullable=False)] db.raw("select * from comment limit 5").all() #[('2025-01-12 12:52:09', 1, 1, None, 'SCAM Manual\r\n\r\nA complete guide to create a guide with scam', None, 'story'), # ('2025-01-12 13:28:14', 2, 1, 1, 'Synopsis\r\n\r\nA frontend to a pandoc toolchain to build a book in a supposedly new way.', None, 'story_item'), # ('2025-01-12 13:28:47', 3, 1, 1, 'How to install and start it\r\n', None, 'story_item'), # ('2025-01-12 13:29:48', 4, 1, 1, 'walkthrough to create this manual with the tool\r\n\r\nFirst post//landing page', None, 'story_item'), # ('2025-01-12 13:30:23', 5, 1, 3, 'Quickstart', None, 'comment')] ``` ## db_introspect Le module est livré avec un grapheur de base de données dont voici un exemple : ```bash db_introspect sqlite:///../pdca/aide && xdot out.dot ``` Ce qui donne le résultat suivant ![digramme entité relation](https://github.com/jul/sqlramen/raw/main/out.png?raw=true)

AltStyle によって変換されたページ (->オリジナル) /