0
私はPythonでmongo接続を作成し、いくつかの操作を実行するクラスベースのラッパーを探しています。私はいくつかのコードを書くことに始めましたが、既存のラッパーが同様のニーズに対応できるかどうかを考えました。私はあなたのコードが提供するメリットを理解していないクラスベースのラッパーfor Python Mongo
私はPythonでmongo接続を作成し、いくつかの操作を実行するクラスベースのラッパーを探しています。私はいくつかのコードを書くことに始めましたが、既存のラッパーが同様のニーズに対応できるかどうかを考えました。私はあなたのコードが提供するメリットを理解していないクラスベースのラッパーfor Python Mongo
上記のよう
class MongoDbConn:
def __init__(self):
self.settings_mongo = {
'username': DB_USERID_MONGO,
'password': DB_PASSWORD_MONGO,
'host': DB_HOST_MONGO + ":" + DB_PORT_MONGO,
'database': DB_AUTH_NM_MONGO
}
self.mongo_client =\
MongoClient("mongodb://{username}:{password}@"
"{host}/?authSource={database}".format(
**self.settings_mongo))
def execute_operation(self, db_name, collection_name, query,
operation):
assert operation in ["find", "find_one", "distinct"]
db = self.mongo_client[db_name]
collection = db[collection_name]
rs = getattr(collection, operation)(query)
return rs
def find_one(self, db_name, collection_name, query):
return self.execute_operation(self, db_name, collection_name, query,
operation="find_one")
def find(self, db_name, collection_name, query):
TODO
def delete(self, db_name, collection_name, query):
TODO
def ensure_index_if_not_exist(self, db_name, collection_name, query):
TODO
def distinct(self, db_name, collection_name, query):
TODO
def insert(self, db_name, collection_name, query):
TODO
def update(self, db_name, collection_name, query):
TODO
したがって、上記の例のように、私は同じ性質の利用できる汎用的なライブラリーを探しています。 PyMongoを直接使うよりも複雑で、多分少し遅いかもしれませんが、それ以外のところは私にはあまり効果がありません。ちょうどPyMongoを使用してください。
MongoDBとのより高いレベルのPythonインターフェイスをお探しの場合は、PythonオブジェクトとMongoDBドキュメントの間で変換するPyMODMを検討してください。Django ORMはSQL行の場合と少し似ています。
ありがとう@A。 Jesse、私はORMに全く興味がありません。 mongoでCRUD操作ができるはずのジェネリック関数が必要です。コードが遅くなる理由を教えてください。私はそれを改善することができます。 MongoClientを使ってはいけないと言いたいのですか?私は、MongoClientをリンクをたどることからインスピレーションを受けました。http://stackoverflow.com/questions/13959790/pymongo-mongoclient-or-connection – sudhanshu
MongoDbConnを直接作成せず、MongoClientを作成してすべての操作に使用してください。そうすると関数呼び出しが少なくて済むでしょう。もし 'find'をしたいのであれば、MongoClientの' find'関数を呼び出すのではなく、MongoClientの 'find'関数を直接呼び出します。また、より簡単になります。 MongoClientの関数を呼び出す別のクラスにMongoClientをラップする必要はありません。 –
確かに、私はグローバルレベルでmongoクライアントを持つことができます。スタートアップのように、findなどの関数を書くために使うことができます。 – sudhanshu