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]
?
ขอขอบคุณที่ตรวจสอบห้องสมุดนี้! ฉันหวังว่าคุณจะพบว่ามันมีประโยชน์
แน่นอนว่ายังมีพื้นที่สำหรับการปรับปรุงอยู่เสมอ อย่าลังเลที่จะเปิดประเด็นเพื่อให้เราสามารถทำให้ Records ดีขึ้น แข็งแกร่งขึ้น และเร็วขึ้นได้