# academic_graph **Repository Path**: initialdream1659/academic_graph ## Basic Information - **Project Name**: academic_graph - **Description**: 使用学术图谱,创建用户画像。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-06-15 - **Last Updated**: 2024-07-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目代码分支说明 master分支:项目使用Django框架, 从MongoDB数据库中查询数据。 es分支:项目使用Django框架, 从Elasticsearch 中查询数据(除authorshow 应用)。 dev分支: 项目最终代码。项目使用Django框架,authorshow 应用使用Elasticsearch 查询数据, 其他应用直接从mongoDB数据库中查询数据。 # 介绍 本项目使用 python(开发语言)+ django(开发框架)+ mysqlclient/MongoEngine(数据库连接引擎) rest 框架: rest_framework + rest_framework_mongoengine --- # 配置步骤 ## 1. pip 安装模块 模块 | 版本 ---|--- Django | 2.2.2 django-rest-framework-mongoengine | 3.3.1 djangorestframework | 3.9.4 mongoengine | 0.18.0 mysqlclient | 1.4.2.post1 pip | 19.0.3 pymongo | 3.8.0 pytz | 2019.1 setuptools | 40.8.0 six | 1.12.0 sqlparse | 0.3.0 django_filter | 2.1.0 Pillow | 6.0.0 coreapi | API 文档依赖库 uuid | 生成 id 依赖库 pip 一键导出与安装方法: ``` pip3 freeze > requirements.txt pip3 install -r requirements.txt ``` ## 2. 数据库建表 在文件 `academic/settings.py` 里 `mysql` 配置如下: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'django', # 数据库名称 'USER': 'root', 'PASSWORD': 'root', 'HOST': 'localhost', 'PORT': '3306', } } ``` 在指定数据库中创建 `django` 数据库,然后在项目终端中执行命令 `python manage.py migrate`,显示如下内容则执行成功 ``` Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying sessions.0001_initial... OK ``` ## 3. 创建用户名和密码 [rest_framework 权限控制](https://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/) 创建拥有高级权限的用户,在项目根目录下执行以下命令 ```bash python manage.py createsuperuser ``` ## 4. 运行 ```bash python manage.py runserver ``` ## 5. 外网前后端API接口测试 将代码放置在 192.168.1.123 机器上,创建虚拟环境django,执行: ```bash source django/bin/activate cd django_demo/academic_graph python3 manage.py runserver 0.0.0.0:8000 ``` --- API Root:/v1/ # API 文档 > `urls.py` 文件中配置了 API 文档接口,如下内容: ``` path('docs/', include_docs_urls(title='Academic API')), # API 文档接口 ``` 因此文档地址为:`http://XXXX/docs/`,在本地上运行则可访问 `http://127.0.0.1:8000/docs/` --- # 一些资料 ### 一、Django 框架资料 1. [django 菜鸟教程](https://www.runoob.com/django/django-tutorial.html) 2. [django 官方文档教程](https://docs.djangoproject.com/zh-hans/2.2/) ### 二、数据库连接资料 1. [MongoEngine 官方文档](http://docs.mongoengine.org/tutorial.html) 2. [在 Django 中配置多个数据库](https://docs.djangoproject.com/en/dev/topics/db/multi-db/) > 如果需要 MongoEngine api 文档,查看 [这里](http://docs.mongoengine.org/apireference.html#),介绍 MongoEngine 连接数据库及数据库 CRUD 操作。 ### 三、Django rest framework 1. [Django REST framework 官方文档](https://www.django-rest-framework.org/) 2. [Django Rest framework mongoengine](http://umutbozkurt.github.io/django-rest-framework-mongoengine/index.html) ### 四、database_operation 该文件夹用于对外部数据导入至mongodb数据库进行处理,不用于程序运行。 ``` mongodb.py用于给aminer_authors增加chiname字段。 orgs_operation.py 用于给aminer_authors增加chiorgs字段。 blankspace_operation.py 用于给USA基金处理空格。 enter_operator.py 用于给科技政策回车键处理。 themes_operator.py 用于给学术会议增加对应的主题报告字段。 fund.py 用于将外部中国项目基金txt文件导入至mongodb数据库中。 ``` --- 向mongodb数据库中导入数据,默认生成_id,其为ObjectId类型,将该ObjectId数据类型转化为字符串类型: ``` db.CHINA.find({"_id":{$type:7}}).forEach( function(x){ x._id=ObjectId().str; db.CHINA.save(x); } ) ``` aminer_authors数据库删除字段chiname: ``` db.aminer_authors.update({"chiname":{'$exists': true}}, {'$unset':{"chiname":""}},{multi:true}); ``` 1. [mongodb 数据库字段类型编号 ](https://blog.csdn.net/xiongzaiabc/article/details/81909771) 2. [mongodb 索引和explain使用](https://blog.csdn.net/lihao__/article/details/77010864) 3. [mongodb 创建索引时的几点建议](https://blog.csdn.net/liqfyiyi/article/details/51791233) ### 五、add_data_illustrated 用于外部增加数据的说明。 ### 六、API接口编写 原:Academic API.doc 是各个API接口说明文档。 新: 在eoLinker中编写,[详见'学术图谱创建API接口。'](http://api.x.com/#/home/project/inside/overview?projectName=%E5%AD%A6%E6%9C%AF%E5%9B%BE%E8%B0%B1%E5%88%9B%E5%BB%BAAPI%E6%8E%A5%E5%8F%A3&projectID=42) ### 七、mongodb数据库备份与恢复 ``` mongodump -h dbhost --host --port -d dbname -o dbdirectory mongorestore -h dbhost -d dbname --dir dbdirectory --drop ``` ``` dbhost: 服务器地址 dbname: 数据库实例 dbdirectory: 备份数据存放位置 drop: 恢复数据时限删除当前数据,慎用 ``` 本项目mongodb备份数据存储在机器 10.2.46.228,原始数据存储在机器 10.2.46.229 mongodb分片集群中。 ### 八、github项目参考: 1. [iHealth 项目的后台程序,一个基于 Django 和 MongoDB 的 Web 后端。](https://github.com/iHealth-ecnu/iHealth_site)