Records é uma biblioteca muito simples, mas poderosa, para fazer consultas SQL brutas na maioria dos bancos de dados relacionais.
Basta escrever SQL. Sem sinos, sem assobios. Esta tarefa comum pode ser surpreendentemente difícil com as ferramentas padrão disponíveis. Esta biblioteca se esforça para tornar esse fluxo de trabalho o mais simples possível, ao mesmo tempo que fornece uma interface elegante para trabalhar com os resultados da sua consulta.
O suporte de banco de dados inclui RedShift, Postgres, MySQL, SQLite, Oracle e MS-SQL (drivers não incluídos).
Sabemos escrever SQL, então vamos enviar alguns para nosso banco de dados:
import records
db = records . Database ( 'postgres://...' )
rows = db . query ( 'select * from active_users' ) # or db.query_file('sqls/active-users.sql')
Pegue uma linha de cada vez:
> >> rows [ 0 ]
< Record { "username" : "model-t" , "active" : true , "name" : "Henry Ford" , "user_email" : "[email protected]" , "timezone" : "2016-02-06 22:28:23.894202" } >
Ou repita sobre eles:
for r in rows :
print ( r . name , r . user_email )
Os valores podem ser acessados de várias maneiras: row.user_email
, row['user_email']
ou row[3]
.
Campos com caracteres não alfanuméricos (como espaços) também são totalmente suportados.
Ou guarde uma cópia da sua coleção de discos para referência futura:
> >> rows . all ()
[ < Record { "username" : ...} > , < Record { "username" : ...} > , < Record { "username" : ...} > , ...]
Se você está esperando apenas um resultado:
> >> rows . first ()
< Record { "username" : ...} >
Outras opções incluem rows.as_dict()
e rows.as_dict(ordered=True)
.
$DATABASE_URL
.Database.get_table_names
de conveniência.Database.query('life=:everything', everything=42)
.t = Database.transaction(); t.commit()
.Database.bulk_query()
& Database.bulk_query_file()
.Records é orgulhosamente desenvolvido com SQLAlchemy e Tablib.
Records também apresenta integração completa com Tablib e permite exportar seus resultados para CSV, XLS, JSON, tabelas HTML, YAML ou Pandas DataFrames com uma única linha de código. Excelente para compartilhar dados com amigos ou gerar relatórios.
>>> print (rows.dataset)
username|active|name |user_email |timezone
--------|------|----------|-----------------|--------------------------
model-t |True |Henry Ford|[email protected]|2016-02-06 22:28:23.894202
...
Valores separados por vírgula (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ão é linguagem de marcação (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 }
...
Notação de objeto 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' ))
Quadro de dados do 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
Você entendeu. Todos os outros recursos do Tablib também estão disponíveis, para que você possa classificar resultados, adicionar/remover colunas/linhas, remover duplicatas, transpor a tabela, adicionar separadores, dividir dados por coluna e muito mais.
Consulte a documentação do Tablib para obter mais detalhes.
Claro, o método de instalação recomendado é pipenv:
$ pipenv install records[pandas]
?
Obrigado por verificar esta biblioteca! Espero que você ache útil.
Claro, sempre há espaço para melhorias. Sinta-se à vontade para abrir uma edição para que possamos tornar os registros melhores, mais fortes e mais rápidos.