Records ist eine sehr einfache, aber leistungsstarke Bibliothek zum Durchführen von Roh-SQL-Abfragen an die meisten relationalen Datenbanken.
Schreiben Sie einfach SQL. Kein Schnickschnack, keine Pfeifen. Diese häufige Aufgabe kann mit den verfügbaren Standardwerkzeugen überraschend schwierig sein. Ziel dieser Bibliothek ist es, diesen Arbeitsablauf so einfach wie möglich zu gestalten und gleichzeitig eine elegante Schnittstelle für die Arbeit mit Ihren Abfrageergebnissen bereitzustellen.
Die Datenbankunterstützung umfasst RedShift, Postgres, MySQL, SQLite, Oracle und MS-SQL (Treiber nicht im Lieferumfang enthalten).
Wir wissen, wie man SQL schreibt, also senden wir einige davon an unsere Datenbank:
import records
db = records . Database ( 'postgres://...' )
rows = db . query ( 'select * from active_users' ) # or db.query_file('sqls/active-users.sql')
Schnappen Sie sich jeweils eine Zeile:
> >> rows [ 0 ]
< Record { "username" : "model-t" , "active" : true , "name" : "Henry Ford" , "user_email" : "[email protected]" , "timezone" : "2016-02-06 22:28:23.894202" } >
Oder iterieren Sie darüber:
for r in rows :
print ( r . name , r . user_email )
Auf Werte kann auf viele Arten zugegriffen werden: row.user_email
, row['user_email']
oder row[3]
.
Felder mit nicht alphanumerischen Zeichen (wie Leerzeichen) werden ebenfalls vollständig unterstützt.
Oder bewahren Sie eine Kopie Ihrer Plattensammlung zum späteren Nachschlagen auf:
> >> rows . all ()
[ < Record { "username" : ...} > , < Record { "username" : ...} > , < Record { "username" : ...} > , ...]
Wenn Sie nur ein Ergebnis erwarten:
> >> rows . first ()
< Record { "username" : ...} >
Weitere Optionen sind rows.as_dict()
und rows.as_dict(ordered=True)
.
$DATABASE_URL
.Database.get_table_names
-Methode.Database.query('life=:everything', everything=42)
.t = Database.transaction(); t.commit()
.Database.bulk_query()
& Database.bulk_query_file()
.Records wird stolz von SQLAlchemy und Tablib unterstützt.
Records verfügt außerdem über eine vollständige Tablib-Integration und ermöglicht Ihnen den Export Ihrer Ergebnisse in CSV, XLS, JSON, HTML-Tabellen, YAML oder Pandas DataFrames mit einer einzigen Codezeile. Hervorragend geeignet, um Daten mit Freunden zu teilen oder Berichte zu erstellen.
>>> print (rows.dataset)
username|active|name |user_email |timezone
--------|------|----------|-----------------|--------------------------
model-t |True |Henry Ford|[email protected]|2016-02-06 22:28:23.894202
...
Durch Kommas getrennte Werte (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 ist keine Auszeichnungssprache (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 }
...
JavaScript-Objektnotation (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' ))
Pandas DataFrame
> >> 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
Sie verstehen, worauf es ankommt. Alle anderen Funktionen von Tablib sind ebenfalls verfügbar, sodass Sie Ergebnisse sortieren, Spalten/Zeilen hinzufügen/entfernen, Duplikate entfernen, die Tabelle transponieren, Trennzeichen hinzufügen, Daten nach Spalten aufteilen und vieles mehr können.
Weitere Informationen finden Sie in der Tablib-Dokumentation.
Die empfohlene Installationsmethode ist natürlich Pipenv:
$ pipenv install records[pandas]
?
Vielen Dank, dass Sie sich diese Bibliothek angesehen haben! Ich hoffe, Sie finden es nützlich.
Natürlich gibt es immer Raum für Verbesserungen. Fühlen Sie sich frei, ein Problem zu eröffnen, damit wir Records besser, stärker und schneller machen können.