Records는 대부분의 관계형 데이터베이스에 대한 원시 SQL 쿼리를 만들기 위한 매우 간단하지만 강력한 라이브러리입니다.
SQL을 작성하면 됩니다. 종소리도 없고 휘파람 소리도 없습니다. 이러한 일반적인 작업은 사용 가능한 표준 도구로는 놀라울 정도로 어려울 수 있습니다. 이 라이브러리는 쿼리 결과를 처리할 수 있는 우아한 인터페이스를 제공하는 동시에 이 워크플로를 최대한 단순하게 만들기 위해 노력하고 있습니다.
데이터베이스 지원에는 RedShift, Postgres, MySQL, SQLite, Oracle 및 MS-SQL(드라이버는 포함되지 않음)이 포함됩니다.
우리는 SQL을 작성하는 방법을 알고 있으므로 일부를 데이터베이스로 보내겠습니다.
import records
db = records . Database ( 'postgres://...' )
rows = db . query ( 'select * from active_users' ) # or db.query_file('sqls/active-users.sql')
한 번에 한 행씩 가져옵니다.
> >> rows [ 0 ]
< Record { "username" : "model-t" , "active" : true , "name" : "Henry Ford" , "user_email" : "[email protected]" , "timezone" : "2016-02-06 22:28:23.894202" } >
또는 이를 반복합니다.
for r in rows :
print ( r . name , r . user_email )
값은 row.user_email
, row['user_email']
또는 row[3]
등 다양한 방법으로 액세스할 수 있습니다.
영숫자가 아닌 문자(예: 공백)가 포함된 필드도 완벽하게 지원됩니다.
또는 나중에 참조할 수 있도록 기록 컬렉션의 사본을 저장하십시오.
> >> rows . all ()
[ < Record { "username" : ...} > , < Record { "username" : ...} > , < Record { "username" : ...} > , ...]
하나의 결과만 기대하는 경우:
> >> rows . first ()
< Record { "username" : ...} >
다른 옵션으로는 rows.as_dict()
및 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는 SQLAlchemy와 Tablib를 통해 자랑스럽게 구동됩니다.
Records는 또한 완전한 Tablib 통합 기능을 갖추고 있으며 한 줄의 코드를 사용하여 결과를 CSV, XLS, JSON, HTML 테이블, YAML 또는 Pandas DataFrames로 내보낼 수 있습니다. 친구와 데이터를 공유하거나 보고서를 생성하는 데 탁월합니다.
>>> print (rows.dataset)
username|active|name |user_email |timezone
--------|------|----------|-----------------|--------------------------
model-t |True |Henry Ford|[email protected]|2016-02-06 22:28:23.894202
...
쉼표로 구분된 값(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은 마크업 언어가 아닙니다(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 객체 표기법(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" }, ...]
마이크로소프트 엑셀(xls, xlsx)
with open ( 'report.xls' , 'wb' ) as f :
f . write ( rows . export ( 'xls' ))
팬더 데이터프레임
> >> 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
당신은 요점을 이해합니다. Tablib의 다른 모든 기능도 사용할 수 있으므로 결과 정렬, 열/행 추가/제거, 중복 제거, 테이블 전치, 구분 기호 추가, 열별로 데이터 분할 등을 수행할 수 있습니다.
자세한 내용은 Tablib 설명서를 참조하세요.
물론 권장되는 설치 방법은 Pipenv입니다.
$ pipenv install records[pandas]
?
이 라이브러리를 확인해 주셔서 감사합니다! 도움이 되셨기를 바랍니다.
물론 개선의 여지는 항상 존재합니다. 기록을 더 좋고, 더 강력하고, 더 빠르게 만들 수 있도록 자유롭게 이슈를 열어주세요.