Records est une bibliothèque très simple, mais puissante, permettant d'effectuer des requêtes SQL brutes sur la plupart des bases de données relationnelles.
Écrivez simplement du SQL. Pas de cloches, pas de sifflets. Cette tâche courante peut s'avérer étonnamment difficile avec les outils standards disponibles. Cette bibliothèque s'efforce de rendre ce flux de travail aussi simple que possible, tout en fournissant une interface élégante pour travailler avec les résultats de vos requêtes.
La prise en charge des bases de données inclut RedShift, Postgres, MySQL, SQLite, Oracle et MS-SQL (pilotes non inclus).
Nous savons écrire du SQL, alors envoyons-en quelques-uns à notre base de données :
import records
db = records . Database ( 'postgres://...' )
rows = db . query ( 'select * from active_users' ) # or db.query_file('sqls/active-users.sql')
Saisissez une ligne à la fois :
> >> rows [ 0 ]
< Record { "username" : "model-t" , "active" : true , "name" : "Henry Ford" , "user_email" : "[email protected]" , "timezone" : "2016-02-06 22:28:23.894202" } >
Ou parcourez-les :
for r in rows :
print ( r . name , r . user_email )
Les valeurs sont accessibles de plusieurs manières : row.user_email
, row['user_email']
ou row[3]
.
Les champs contenant des caractères non alphanumériques (comme les espaces) sont également entièrement pris en charge.
Ou conservez une copie de votre collection de disques pour référence ultérieure :
> >> rows . all ()
[ < Record { "username" : ...} > , < Record { "username" : ...} > , < Record { "username" : ...} > , ...]
Si vous n'attendez qu'un seul résultat :
> >> rows . first ()
< Record { "username" : ...} >
D'autres options incluent rows.as_dict()
et rows.as_dict(ordered=True)
.
$DATABASE_URL
.Database.get_table_names
.Database.query('life=:everything', everything=42)
.t = Database.transaction(); t.commit()
.Database.bulk_query()
& Database.bulk_query_file()
.Records est fièrement propulsé par SQLAlchemy et Tablib.
Records propose également une intégration complète de Tablib et vous permet d'exporter vos résultats au format CSV, XLS, JSON, HTML Tables, YAML ou Pandas DataFrames avec une seule ligne de code. Excellent pour partager des données avec des amis ou générer des rapports.
>>> print (rows.dataset)
username|active|name |user_email |timezone
--------|------|----------|-----------------|--------------------------
model-t |True |Henry Ford|[email protected]|2016-02-06 22:28:23.894202
...
Valeurs séparées par des virgules (CSV)
>>> print (rows.export( ' csv ' ))
username,active,name,user_email,timezone
model-t,True,Henry Ford,[email protected],2016-02-06 22:28:23.894202
...
YAML n'est pas un langage de balisage (YAML)
> >> print ( rows . export ( 'yaml' ))
- { active : true , name : Henry Ford , timezone : '2016-02-06 22:28:23.894202' , user_email : model - t @ gmail . com , username : model - t }
...
Notation d'objet JavaScript (JSON)
> >> print ( rows . export ( 'json' ))
[{ "username" : "model-t" , "active" : true , "name" : "Henry Ford" , "user_email" : "[email protected]" , "timezone" : "2016-02-06 22:28:23.894202" }, ...]
Microsoft Excel (xls, xlsx)
with open ( 'report.xls' , 'wb' ) as f :
f . write ( rows . export ( 'xls' ))
Cadre de données Pandas
> >> rows . export ( 'df' )
username active name user_email timezone
0 model - t True Henry Ford model - t @ gmail . com 2016 - 02 - 06 22 : 28 : 23.894202
Vous comprenez. Toutes les autres fonctionnalités de Tablib sont également disponibles, vous pouvez donc trier les résultats, ajouter/supprimer des colonnes/lignes, supprimer les doublons, transposer le tableau, ajouter des séparateurs, découper les données par colonne, etc.
Voir la documentation Tablib pour plus de détails.
Bien entendu, la méthode d’installation recommandée est pipenv :
$ pipenv install records[pandas]
?
Merci d'avoir consulté cette bibliothèque ! J'espère que vous le trouverez utile.
Bien sûr, il y a toujours place à l’amélioration. N'hésitez pas à ouvrir un numéro afin que nous puissions rendre les enregistrements meilleurs, plus forts et plus rapides.