{ "info": { "author": "Masaki Ohno", "author_email": "masakio@post.kek.jp", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Topic :: Database :: Front-Ends" ], "description": "EDMAN\n=====\n\n|py_version| |circleci|\n\n| KEK IMSS SBRC/PF Experimental Data Management System.\n| json\u30d5\u30a1\u30a4\u30eb(\u968e\u5c64\u69cb\u9020\u306b\u306a\u3063\u305f\u5b9f\u9a13\u30c7\u30fc\u30bf\u7b49)\u3092MongoDB\u306b\u6295\u5165\u3057\u307e\u3059\u3002\n\nRequirement\n-----------\n- pymongo\n- python-dateutil\n- jmespath\n- tqdm\n\nand MongoDB.\n\nModules Usage\n-------------\n\n\u25efCreate\n\n::\n\n import json\n from edman import DB, Convert\n\n # Load json into a dictionary\n json_dict = json.load(json_file)\n\n # json to json for edman\n convert = Convert()\n converted_edman = convert.dict_to_edman(json_dict)\n\n # insert\n con = {'port':'27017', 'host':'localhost', 'database':'database_name', 'auth_database':'auth_database_name', 'user':'mongodb_user_name', 'password':'monogodb_user_password'}\n db = DB(con)\n result = db.insert(converted_edman)\n\n\u25efRead\n\n::\n\n from path import Path\n from edman import DB, JsonManager, Search\n\n con = {'port':'27017', 'host':'localhost', 'database':'database_name', 'auth_database':'auth_database_name', 'user':'mongodb_user_name', 'password':'monogodb_user_password'}\n db = DB(con)\n search = Search(db)\n collection = 'target_collection'\n\n # Same syntax as pymongo's find query\n query = {'_id':'OBJECTID'}\n\n # example, 2 top levels of parents and 3 lower levels of children (ref mode)\n search_result = search.find(collection, query, parent_depth=2, child_depth=3)\n\n # Save search results\n dir = Path('path_to')\n jm = JsonManager()\n jm.save(search_result, dir, name='filename', date=True)\n\n\u25efUpdate\n\n::\n\n import json\n from edman import DB\n\n modified_data = json.load(modified_json_file)\n\n # emb example\n # Same key will be modified, new key will be added\n # modified_data = {'key': 'modified value', 'child': {'key': 'value'}}\n\n # ref example\n # Same key will be modified, new key will be added\n # modified_data = {'key': 'modified value', 'new_key': 'value'}\n\n con = {'port':'27017', 'host':'localhost', 'database':'database_name', 'auth_database':'auth_database_name', 'user':'mongodb_user_name', 'password':'monogodb_user_password'}\n db = DB(con)\n result = db.update(collection, objectid, modified_data, structure='ref')\n\n\u25efDelete\n\n::\n\n from edman import DB\n\n con = {'port':'27017', 'host':'localhost', 'database':'database_name', 'auth_database':'auth_database_name', 'user':'mongodb_user_name', 'password':'monogodb_user_password'}\n db = DB(con)\n result = db.delete(objectid, collection, structure='ref')\n\nJson Format\n-----------\n| example\n\n::\n\n {\n \"Beamtime\":\n [\n {\n \"date\": {\"#date\": \"2019-09-17\"},\n \"expInfo\":[\n {\n \"time\": {\"#date\": \"2019/09/17 13:21:45\"},\n \"int_value\": 135,\n \"float_value\":24.98\n },\n {\n \"time\": {\"#date\": \"2019/09/17 13:29:12\"},\n \"string_value\": \"hello world\"\n }\n ]\n },\n {\n \"date\": {\"#date\": \"2019-09-18\"},\n \"expInfo\":[\n {\n \"array_value\": [\"string\", 1234, 56.78, true, null],\n \"Bool\": false,\n \"Null type\": null\n }\n ]\n }\n ]\n }\n\n| #date{}\u3067\u56f2\u3080\u3068\u65e5\u4ed8\u66f8\u5f0f\u304cdatetime\u578b\u306b\u5909\u63db\u3055\u308c\u307e\u3059\u3002\u66f8\u5f0f\u306fdateutil\u3068\u540c\u7b49\u3002\n| \u4f7f\u7528\u3067\u304d\u308b\u578b\u306fjson\u306b\u6e96\u62e0\u3002\u6574\u6570\u3001\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u3001\u30d6\u30fc\u30eb\u5024\u3001null\u578b\u3001\u914d\u5217\u3082\u4f7f\u7528\u53ef\u3002\n| https://dateutil.readthedocs.io/en/stable/parser.html#module-dateutil.parser\n| json\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u578b\u306fEdman\u3067\u306f\u968e\u5c64\u69cb\u9020\u3068\u3057\u3066\u8a8d\u8b58\u3055\u308c\u307e\u3059\u3002\n|\n| \u4f7f\u3063\u3066\u306f\u3044\u3051\u306a\u3044\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u540d\n| \u30fb\u89aa\u5b50\u95a2\u4fc2\u306e\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\u3068\u540c\u3058\u540d\u524d(_ed_parent,_ed_child) \u203b\u30b7\u30b9\u30c6\u30e0\u69cb\u7bc9\u6642\u306b\u306e\u307f\u5909\u66f4\u53ef\n| \u4f7f\u3063\u3066\u306f\u3044\u3051\u306a\u3044\u30ad\u30fc\u540d\n| \u30fb\u65e5\u4ed8\u8868\u73fe\u306e\u5909\u63db\u306b\u4f7f\u7528(#date) \u203b\u30b7\u30b9\u30c6\u30e0\u69cb\u7bc9\u6642\u306b\u306e\u307f\u5909\u66f4\u53ef\n| \u30fbObjectId\u3068\u540c\u3058\u30d5\u30a3\u30fc\u30eb\u30c9\u540d(_id)\n| \u305d\u306e\u4ed6MongoDB\u3067\u7981\u6b62\u3055\u308c\u3066\u3044\u308b\u30d5\u30a3\u30fc\u30eb\u30c9\u540d\u306f\u4f7f\u7528\u4e0d\u53ef\n| https://docs.mongodb.com/manual/reference/limits/#naming-restrictions\n|\n| MongoDB\u306e1\u3064\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u5bb9\u91cf\u4e0a\u9650\u306f16MB\u3067\u3059\u304c\u3001\n| emb\u5f62\u5f0f\u306e\u5834\u5408\u306fObjectId\u53ca\u3073\u30d5\u30a1\u30a4\u30eb\u8ffd\u52a0\u3054\u3068\u306e\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\u30c7\u30fc\u30bf\u3092\u542b\u3080\u305f\u3081\u300116MB\u3088\u308a\u5c11\u306a\u304f\u306a\u308a\u307e\u3059\u3002\n| ref\u5f62\u5f0f\u306e\u5834\u5408\u306f1\u968e\u5c64\u306b\u3064\u304dObjectId\u3001\u53ca\u3073root(\u4e00\u756a\u4e0a\u306e\u89aa)\u4ee5\u5916\u306f\u89aa\u3078\u306e\u53c2\u7167\u3082\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u542b\u3081\u3001\u5b50\u8981\u7d20\u3084\u30d5\u30a1\u30a4\u30eb\u304c\u591a\u3044\u307b\u3069\u53c2\u7167\u304c\u5897\u3048\u308b\u305f\u308116MB\u3088\u308a\u5c11\u306a\u304f\u306a\u308a\u307e\u3059\u3002\n\nScripts Usage\n-------------\n\n| scripts\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u52d5\u4f5c\u7528\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u3042\u308a\u307e\u3059\u3002\n| scripts/ini/db.ini.sample\u3092db.ini\u306b\u5909\u66f4\u5f8c\u3001\u4e2d\u8eab\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n|\n| \u25efemb(Embedded)\u3068ref(reference)\u306b\u3064\u3044\u3066\n| emb\u306fjson\u30d5\u30a1\u30a4\u30eb\u306e\u69cb\u9020\u3092\u305d\u306e\u307e\u307e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3068\u3057\u3066MongoDB\u306b\u6295\u5165\u3057\u307e\u3059\u3002\n| ref\u306fjson\u306e\u89aa\u5b50\u69cb\u9020\u3092\u89e3\u6790\u3057\u3001\u5404\u89aa\u3092\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3068\u3057\u3066\u767b\u9332\u3001\u30c7\u30fc\u30bf\u306f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3068\u3057\u3066\u6295\u5165\u3057\u307e\u3059\u3002\n|\n| \u25ef\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u4f7f\u7528\u3059\u308b\u30af\u30a8\u30ea\u306b\u3064\u3044\u3066\n|\n| \u691c\u7d22\u7528\u30af\u30a8\u30ea\n| \u691c\u7d22\u306e\u969b\u306fpymongo\u306e\u30d5\u30a3\u30eb\u30bf\u5f62\u5f0f\u3067\u6307\u5b9a\u3057\u307e\u3059\n| \u30af\u30a8\u30ea\u5f62\u5f0f\u306f \"{pymongo\u3067\u306e\u30d5\u30a3\u30eb\u30bf\u6761\u4ef6}\"\n| \u53c2\u7167: http://api.mongodb.com/python/current/api/pymongo/collection.html#pymongo.collection.Collection.find\n|\n| \u968e\u5c64\u6307\u5b9a\u30af\u30a8\u30ea\n| emb(Embedded)\u5f62\u5f0f\u3067\u30c7\u30fc\u30bf\u304c\u5165\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u4e0b\u8a18\u306e\u3088\u3046\u306a\u30af\u30a8\u30ea\u3067\u6307\u5b9a\u3057\u307e\u3059\n| \u69cb\u9020\u4e0a\u3001emb\u306e\u6642\u306f\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3057\u306a\u3051\u308c\u3070\u30c7\u30fc\u30bf\u306b\u5230\u9054\u3067\u304d\u307e\u305b\u3093\n| \u4f8b:\n\n::\n\n {\n \"collectionA\":[\n {\n \"collectionB\":{\"data1\":\"value1\"}\n },\n {\n \"collectionC:{\n \"data2\":\"value2\",\n \"CollectionD\":{\n \"data3\":\"value3\",\n \"data4\":\"value4\"\n }\n }\n }\n ]\n }\n\n| \u30fbdata4\u3092\u6d88\u3057\u305f\u3044\u5834\u5408\n| \"['collectionA', '1', 'collectionC', 'collectionD']\"\n| \u30ea\u30b9\u30c8\u3067\u6d88\u3057\u305f\u3044\u9805\u76ee\u306e\u76f4\u8fd1\u306e\u89aa\u307e\u3067\u3092\u6307\u5b9a\u3059\u308b\n| \u30c7\u30fc\u30bf\u304c\u8907\u6570\u3042\u308a\u3001\u30ea\u30b9\u30c8\u3067\u56f2\u307e\u308c\u3066\u3044\u305f\u5834\u5408\u306f\u6dfb\u5b57\u3092\u6570\u5b57\u3067\u6307\u5b9a\n|\n| \u25ef\u5404\u30b9\u30af\u30ea\u30d7\u30c8\u30d5\u30a1\u30a4\u30eb\n| entry.py: json\u30d5\u30a1\u30a4\u30eb\u304b\u3089MongoDB\u306b\u6295\u5165\n| find.py: \u30c7\u30fc\u30bf\u3092\u691c\u7d22\u3057\u3001json\u306b\u4fdd\u5b58 \u30af\u30a8\u30ea1\u3092\u4f7f\u7528\u3057\u307e\u3059\n| item_delete.py: \u30c7\u30fc\u30bf\u5185\u306e\u9805\u76ee\u3092\u6d88\u3059 emb\u306e\u6642\u30af\u30a8\u30ea2\u3092\u4f7f\u7528\u3057\u307e\u3059\n| update.py: \u30c7\u30fc\u30bf\u306e\u66f4\u65b0(\u66f4\u65b0\u7528json\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f)\n| delete.py: \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u524a\u9664(emb\u306f\u5168\u524a\u9664\u3001ref\u306f\u6307\u5b9a\u3057\u305fobjectid\u4ee5\u4e0b\u3092\u524a\u9664)\n| file_add.py: \u8a72\u5f53\u30c7\u30fc\u30bf\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u6dfb\u4ed8\u3059\u308b emb\u306e\u6642\u30af\u30a8\u30ea2\u3092\u4f7f\u7528\u3057\u307e\u3059\n| file_dl.py: \u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 emb\u306e\u6642\u30af\u30a8\u30ea2\u3092\u4f7f\u7528\u3057\u307e\u3059\n| file_delete.py: \u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664 emb\u306e\u6642\u30af\u30a8\u30ea2\u3092\u4f7f\u7528\u3057\u307e\u3059\n| db_create.py: \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u53ca\u3073\u30e6\u30fc\u30b6\u4f5c\u6210\u64cd\u4f5c\u652f\u63f4\u7528(MongoDB\u306e\u7ba1\u7406\u8005\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u5fc5\u8981)\n| db_destroy.py: \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u524a\u9664\u64cd\u4f5c\u652f\u63f4\u7528(\u30e6\u30fc\u30b6\u524a\u9664\u306f\u30bd\u30fc\u30b9\u66f8\u304d\u63db\u3048\u304c\u5fc5\u8981)\n| structure_convert.py: DB\u5185\u306eemb\u3092ref\u3078\u5909\u63db\u3001\u307e\u305f\u306f\u305d\u306e\u9006\u3092\u884c\u3044\u307e\u3059\n| pullout.py: \u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u5185\u306eemb\u306e\u30ad\u30fc\u3092\u6307\u5b9a\u3057\u3001\u305d\u306e\u30ad\u30fc\u3092\u542b\u3080\u968e\u5c64\u3092\u5168\u3066ref\u306b\u5909\u63db\u3057\u307e\u3059\n| action.py: \u4e0a\u8a18\u306e\u64cd\u4f5c\u30b9\u30af\u30ea\u30d7\u30c8\u7528\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\n\n\u30aa\u30d7\u30b7\u30e7\u30f3\u306a\u3069\u8a73\u3057\u304f\u306f::\n\n scriptname.py -h\n\nInstall\n-------\n| Please install MongoDB in advance.\n\npip install::\n\n pip install edman\n\nLicence\n-------\nMIT\n\nAPI Document\n------------\nhttps://yuskyamada.github.io/EDMAN/\n\nAuthor\n------\n\n[yuskyamada](https://github.com/yuskyamada)\n\n[ryde](https://github.com/ryde)\n\n\u2728\ud83c\udf70\u2728\n\n.. |py_version| image:: https://img.shields.io/badge/python-3.6-blue.svg\n :alt: Use python\n\n.. |circleci| image:: https://circleci.com/gh/yuskyamada/EDMAN/tree/develop.svg?style=svg\n :alt: Build status on circleCi\n :target: https://circleci.com/gh/yuskyamada/EDMAN/tree/develop", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/yuskyamada/EDMAN", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "edman", "package_url": "https://pypi.org/project/edman/", "platform": "", "project_url": "https://pypi.org/project/edman/", "project_urls": { "Homepage": "https://github.com/yuskyamada/EDMAN" }, "release_url": "https://pypi.org/project/edman/0.1.5/", "requires_dist": null, "requires_python": ">=3.6", "summary": "KEK IMSS SBRC/PF Experimental Data Management System", "version": "0.1.5" }, "last_serial": 5904218, "releases": { "0.1.5": [ { "comment_text": "", "digests": { "md5": "b5e0f66d4acdf6d3f8105b36d0c99565", "sha256": "816138d52d23799f5637e41943a12a78d87dc9c6979dae3ced5935583717dbe0" }, "downloads": -1, "filename": "edman-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "b5e0f66d4acdf6d3f8105b36d0c99565", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 28374, "upload_time": "2019-09-30T01:05:10", "url": "https://files.pythonhosted.org/packages/38/17/a648ea64d23c2144296c7b75ff5694d0817e50530cc21b0064dac0f3a811/edman-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a1035a1c5ac78256765874d9d48d2ddd", "sha256": "155bf6503ae0b7c133b129225d3d19269bcaddc593f95087c0cbd66ba5969494" }, "downloads": -1, "filename": "edman-0.1.5.tar.gz", "has_sig": false, "md5_digest": "a1035a1c5ac78256765874d9d48d2ddd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 23803, "upload_time": "2019-09-27T08:19:43", "url": "https://files.pythonhosted.org/packages/57/26/f70f681c71316050df3c4a163df001717d555600688842ffbb07962d2f43/edman-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b5e0f66d4acdf6d3f8105b36d0c99565", "sha256": "816138d52d23799f5637e41943a12a78d87dc9c6979dae3ced5935583717dbe0" }, "downloads": -1, "filename": "edman-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "b5e0f66d4acdf6d3f8105b36d0c99565", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 28374, "upload_time": "2019-09-30T01:05:10", "url": "https://files.pythonhosted.org/packages/38/17/a648ea64d23c2144296c7b75ff5694d0817e50530cc21b0064dac0f3a811/edman-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a1035a1c5ac78256765874d9d48d2ddd", "sha256": "155bf6503ae0b7c133b129225d3d19269bcaddc593f95087c0cbd66ba5969494" }, "downloads": -1, "filename": "edman-0.1.5.tar.gz", "has_sig": false, "md5_digest": "a1035a1c5ac78256765874d9d48d2ddd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 23803, "upload_time": "2019-09-27T08:19:43", "url": "https://files.pythonhosted.org/packages/57/26/f70f681c71316050df3c4a163df001717d555600688842ffbb07962d2f43/edman-0.1.5.tar.gz" } ] }