تعد السجلات مكتبة بسيطة للغاية ولكنها قوية لإنشاء استعلامات 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()
.يتم تشغيل السجلات بفخر بواسطة SQLAlchemy وTablib.
تتميز السجلات أيضًا بتكامل Tablib الكامل، وتسمح لك بتصدير نتائجك إلى CSV أو XLS أو JSON أو HTML Tables أو 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 }
...
تدوين كائن جافا سكريبت (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]
?
شكرا للتحقق من هذه المكتبة! أتمنى أن تجدها مفيدة.
وبطبيعة الحال، هناك دائما مجال للتحسين. لا تتردد في فتح مشكلة حتى نتمكن من جعل السجلات أفضل وأقوى وأسرع.