micromongo

Software screenshot:
micromongo
Rincian Software:
Versi: 0.1.4
Tanggal Upload: 14 Apr 15
Pengembang: Jason Moiron
Lisensi: Gratis
Popularitas: 2

Rating: nan/5 (Total Votes: 0)

micromongo adalah lapisan kecil di sekitar pymongo yang memungkinkan Anda untuk membuat kelas ORM-gaya sederhana yang dapat melakukan validasi, memungkinkan dot akses ke dokumen, hasil queryset auto-wrap, dan memberikan pre / post menyimpan kait.
Ini dirancang dengan microframeworks dalam pikiran, tetapi aplikasi dan kerangka agnostik. Hal ini dimaksudkan untuk menyederhanakan penggunaan pymongo dan menyediakan alat untuk idiom umum, bukan untuk mengaburkan pymongo atau mongodb dari struktur data Anda.
Anda dipersilakan untuk membuka masalah atau mengirim permintaan tarik pada github micromongo dunia
micromongo membuat keputusan desain beberapa atas nama penyederhanaan yang mungkin tidak bekerja untuk Anda:
& Nbsp; - & nbsp; micromongo mempertahankan koneksi global yang tunggal, sehingga Anda tidak dapat memiliki model yang terhubung ke beberapa mongodb server
& Nbsp; - & nbsp; ada handfull nama Model dan nama atribut dokumen yang tidak akan bekerja dengan model micromongo; ini akan dibahas dalam dokumentasi lengkap
& Nbsp; - & nbsp; Anda hanya dapat memiliki satu model per koleksi
memulai
Untuk mulai dengan micromongo, hanya impor:
>>> Dari micromongo impor terhubung, Model
>>> C = terhubung ()
menghubungkan mengambil argumen yang sama sebagai objek Connection pymongo itu, dan berperilaku hampir identik, kecuali bahwa ia mencoba untuk secara otomatis mengembalikan hasil query dibungkus dalam kelas Model yang sesuai. Koneksi objek yang Anda buat melalui panggilan ini akan di-cache dan digunakan oleh berbagai fasilitas ORM-gaya, seperti Model.save (), Model.proxy, dll Jika Anda ingin bersih, object Connection standar, Anda bisa mendapatkan satu dengan mudah :
>>> Dari micromongo impor clean_connection
>>> Bersih = clean_connection ()
Perhatikan bahwa clean_connection tidak mengambil argumen dan akan selalu kembali kelas Connection bersih dengan pengaturan yang sama sebagai koneksi micromongo saat ini.
Dengan benda-benda sambungan ini, Anda dapat membuat database atau melakukan apa pun yang Anda lakukan dengan benda-benda pymongo yang normal:
>>> Db = c.test_db
>>> Koleksi = db.test_collection
>>> Collection.save ({"docID": 1, "gagal": False})
>>> Collection.find_one ()
{U'_id ': objectID (' ... '), u'fail': Salah, u'docid ': 1}
Anda juga dapat mendeklarasikan Model Anda sendiri untuk koleksi tertentu dalam gaya deklaratif:
>>> Kelas TestModel (Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Koleksi = 'test_db.test_collection'
>>> Collection.find_one ()

Kelas-kelas ini memiliki sejumlah fitur tambahan atas kamus yang dapat membuat mereka jauh lebih nyaman untuk digunakan. Kunci dokumen semuanya dapat diakses sebagai atribut:
>>> T = collection.find_one ()
>>> T.fail
Palsu
>>> T.docid
1
Dokumen-dokumen juga mudah bertahan ke database:
>>> T.docid = 17
>>> T.save ()
>>> Clean.test_db.test_collection.find_one ()
{U'_id ': objectID (' ... '), u'fail': Salah, u'docid ': 17}
model mendefinisikan
Di atas, atribut koleksi ditugaskan model Foo kami. Ini adalah cara pintas, meskipun; jika database dan koleksi ditugaskan secara terpisah, Model bisa mengetahui nama koleksi lengkap. Jika pengumpulan dan database yang tidak hadir, micromongo mencoba untuk mencari tahu berdasarkan kelas dan modul nama Model Anda. Misalnya, blog.Post akan menjadi blog.post, atau stream.StreamEntry akan menjadi stream.stream_entry. Eksplisit lebih baik dari implisit, dan itu mendorong bahwa Anda mengatur koleksi secara manual.
Selain pengepakan dan membongkar hasil dari database, model juga dapat mendefinisikan sebuah dokumen spec yang dapat menentukan default dan melakukan validasi sebelum menyimpan model. Ambil sepele Model posting blog:
>>> Dari impor micromongo.spec *
>>> Kelas Post (Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Koleksi = 'test_db.blog_posts'
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; spek = dict (
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; author = Bidang (diperlukan = True, default = 'jmoiron', type = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; title = Bidang (diperlukan = False, default = '', type = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; diterbitkan = Bidang (diperlukan = True, default = False, type = [Benar, Salah]),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; tubuh = Bidang (type = unicode),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; timestamp = Lapangan (),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; )
>>> P = Post.new ()
>>> P

Beberapa hal yang terjadi di sini. Fields yang memiliki default diinisialisasi dengan standar apakah mereka dibutuhkan atau tidak. Jika bidang yang diperlukan tidak memiliki default, itu diinisialisasi ke Tidak ada.
Fields dapat mengambil argumen tipe, yang dapat menjadi sebuah callable yang mengambil nilai dan mengembalikan Benar atau Salah, satu atau jenis dasar lebih, atau satu atau lebih nilai. Jika satu atau lebih jenis yang disediakan, isinstance digunakan untuk menguji bahwa nilai-nilai adalah jenis yang tepat. Jika satu atau lebih nilai yang disediakan, Lapangan bertindak sebagai jenis enum, memeriksa bahwa nilai-nilai dalam set nilai-nilai. Jika tidak ada jenis yang diberikan, validasi selalu melewati di lapangan kecuali diperlukan dan tidak ada.
Jika lapangan di p diberikan jenis yang tidak valid, maka ValueError dinaikkan:
>>> P.title = 10
>>> P.save ()
Traceback (paling panggilan terakhir terakhir):
& Nbsp; ...
ValueError: Tombol tidak cocok spesifikasi: ['title']
>>> Del p.author
>>> P.save ()
Traceback (paling panggilan terakhir terakhir):
& Nbsp; ...
ValueError: Hilang bidang: ['penulis'], bidang valid: ['title']
>>> P.title = 'My blogpost pertama'
>>> P.author = 'jmoiron'
>>> P.published = True
>>> P.body = u "Ini adalah posting blog pertama saya .. & nbsp; Aku sangat senang!"
>>> P.save ()
Model.find
Untuk kenyamanan dan KERING, Model.find adalah classmethod yang akan menggunakan kursor micromongo untuk mengeluarkan menemukan terhadap koleksi yang tepat. Metode ini berperilaku persis sama dengan pymongo di Collection.find.
sedikit dimodifikasi kelas kursor micromongo juga membuat metode order_by Django-terinspirasi tersedia untuk semua kursor (mencari dan apa pun yang Anda rantai off jika ia mengembalikan kursor). Anda dapat melewati satu atau lebih nama field, dengan terkemuka opsional '-', untuk menyelesaikan masalah dengan menaik atau menurun.
Perubahan ini memungkinkan Anda untuk menggunakan sebagian besar kekuatan pymongo tanpa harus impor, dan memungkinkan Anda menghindari pengulangan perlu dari lokasi data Anda.
bidang subclassing
Anda dianjurkan untuk membuat Fields Anda sendiri yang melakukan apa yang Anda inginkan. Subclass lapangan memiliki pre_validate fungsi hook yang mengambil nilai masuk dan dapat mengubahnya namun mereka inginkan. Catatan bahwa ini hanya akan bekerja jika ladang benar-benar hadir; sehingga untuk mendapatkan sesuatu seperti auto_now_add pada DateTimeField, Anda akan ingin membuatnya diperlukan dan memiliki pre_validate yang mengubah Tidak menjadi datetime.datetime.now ()

Persyaratan :.

  • Python

Software yang serupa

MONyog
MONyog

17 Feb 15

DaDaBIK
DaDaBIK

14 Apr 15

Perangkat lunak lain dari pengembang Jason Moiron

redtape
redtape

14 Apr 15

speedparser
speedparser

14 Apr 15

pdf2zip
pdf2zip

11 May 15

Komentar untuk micromongo

Komentar tidak ditemukan
Tambahkan komentar
Aktifkan gambar!