博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python Tornado初学笔记之数据库(二)
阅读量:4679 次
发布时间:2019-06-09

本文共 3877 字,大约阅读时间需要 12 分钟。

一、前言

  首先我先说下关于这节我的学习情况,我个人在这一节第一次看的时候是一头雾水,因为这节使用的数据库并不是我们常见的关系型数据库,而是非关系型数据库MongoDB。在这节的学习中我是相当的难受,每次对数据库操作后总想使用关系型数据的操作方式进行查看下刚才的操作,所以每次都被系统无情的“驳回”我输入的命令。其实在第二次进行学习的时候就适应了,个人觉得有时候非关系型数据库有时候还真的是很好玩的,没有那么多的表于表之间的关系,操作有时也很方便。总的来说吧,在这节中我会尽最大努力将自己所学的内容以及自己对某些知识点的理解进行书面化的表达。如果有什么错的地方,希望看到的各位能够指出,同时我也是为自己做一个笔记,以便以后能够更好的用于再学习。

二、MongoDB数据库的安装

  1、)MongoDB的在线安装:  

    这里我就不写MongoDB数据库是如何安装的了,给出一个链接:

  2、)MongoDB在CentOS7中的离线安装

    a、下载MongoDB的tar包

      链接为:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.3.tgz

      快速的百度云:链接: https://pan.baidu.com/s/10PyQjwPJFM67H6pYag-uow 密码: bq5n

    b、解压之后移动到/usr/local/中:

      tar zxvf mongodb-linux-x86_64-rhel70-3.6.3.tgz 

      mv mongodb-linux-x86_64-rhel70-3.6.3 /usr/local/mongodb

    c、创建dbs文件夹和logs文件

      mkdir -p /var/lib/mongodb/dbs /var/log/mongodb && touch /var/log/mongodb/logs

    d、在/usr/local/mongodb/bin中测试启动

      ./mongod --dbpath=/var/lib/mongodb/dbs --logpath=/var/log/mongodb/logs --fork

      此时会在后台进行启动,如下效果:

      

    e、查看后台mongod的进程号,然后进行终止

      ps -ax | grep mongod

      

      kill 1279 (根据自己实际的进程号来写)

    f、配置为开机启动

      新建vim /etc/mongodb.conf添加以下内容:

      dbpath=/var/lib/mongodb/dbs

      logpath=/var/log/mongodb/logs
      fork=true

      在/lib/systemd/system中新建mongodb.service文件,添加如下内容:

      [Unit]

      Description=mongodb

      After=network.target remote-fs.target nss-lookup.target

      [Service]

      Type=forking
      ExecStart=/usr/local/mongodb/bin/mongod --config /etc/mongodb.conf
      ExecReload=/bin/kill -s HUP $MAINPID
      ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /etc/mongodb.conf
      PrivateTmp=true

      [Install]

      WantedBy=multi-user.target

      

      启动服务:systemctl start mongodb.service

      停止服务:systemctl stop mongodb.service 

      开机启动 :systemctl enable mongodb.service

    g、将mongodb添加到环境变量中

      在/etc/profile文件中添加如下内容:

        MONGODB_HOME=/usr/local/mongodb/

        PATH=$PATH:$MONGODB_HOME/bin:

      激活环境变量:source /etc/profile

      此时输入mongo可进入mongo shell命令行

三、对MongoDB数据库进行操作

   1)、首先需要安装pymongo

    python2:python -m pip install --upgrade pymongo

    python3:python3 -m pip install --upgrade pymongo

   2)、创建连接       

from pymongo import MongoClientconn = MongoClient()

    在MongoClient()中我并没有写任何内容,此处表示连接本地的数据库,当然也可以写成

MongoClient("localhost",27017)

    还可以写成

MongoClient('mongodb://localhost:27017/')

    在连接阿里云服务器中mongodb数据库时,此处有点坑,需要先开启阿里云中的安全组中的端口号。

MongoClient('mongodb://xx.xx.xx.xx:27017')

    在mongodb数据库中可以有多个数据库,而每个数据库中也可以有多个集合,一个集合就是放置一些相关文档的地方。当然在Mongo中,当所使用的数据库不存在时,mongo会自动进行创建该数据库,集合也是同样的。同时,我们在对MongoDB操作时,我们的大部分操作都是在一个集合上进行操作的。在数据库对象上调用collection_names方法获得数据库中的集合列表。

    创建一个数据库对象,并连接test_database数据库

db = conn.test_database 或 db = conn["test_database"]

    查看当前数据库中的集合列表

db.collection_names()

    如果数据库为新创建的数据库,那么当前数据库中的集合为0,上述代码将返回一个空的列表。如果数据库中有集合,那么会返回该集合的名称。

    

    接下来,试着添加一条数据,将该数据添加到posts中。

import datetimepost = {
"author":"Mike", "text":"Another post!", "tags":["bulk","insert"], "date":datetime.datetime.utcnow()}posts = db.postsposts.insert_one(post)

    

  3、处理文档

    MongoDB以文档的形式存储数据,这种形式有着相对自由的数据结构。MongoDB是一个"无模式"数据库:同一个集合中的文档通常拥有相同的结构,但是MongoDB中并不强制要求使用相同结构。在内部,MongoDB以一种称为BSON的类似JSON的二进制形式存储文档。PyMongo允许以Python字典的形式写和取出文档。

    根据上文插入的数据,此处可以进行查询一条数据

>>> posts.find_one({
"text":"Another post!"})

    

    也可以查询多条数据,首先先插入一条数据

post = {
"author": "Mike", "text": "My first blog post!", "tags": ["mongodb", "python", "pymongo"], "date": datetime.datetime.utcnow()}posts.insert_one(post)查询输出多条数据信息:for result in posts.find(): print(result)

    结果会输出:

    

    当然也可以插入多条数据,此时需要用到insert_many()函数。这样就可以将多条数据进行写入mongodb数据了。

    数据库有写入,当然也有删除。当删除一条数据时可以使用delete_one(),删除多条时可以使用delete_many(),当然其中需写上要输出的数据中的部分元素。例如删除一个:  

posts.delete_one({
"text":"Another post!"})

    关于python如何操作Mongodb的,可以看这里,

转载于:https://www.cnblogs.com/zhy128/p/8783034.html

你可能感兴趣的文章
The following IP can be used to access Google website
查看>>
开始写点东西。
查看>>
Android手机分辨率基础知识(DPI,DIP计算)
查看>>
最小割的理解和应用
查看>>
PHP的基本常识(2)
查看>>
三、MyBatis-全局配置文件
查看>>
APUE 1 - Unix数据结构
查看>>
mysql查看连接数
查看>>
Phoenix Tips (5) 使用任意时间戳
查看>>
我的BO之导航属性
查看>>
android开发学习之路——连连看之游戏界面(一)
查看>>
重新开始学习c#啦,希望能坚持下去!
查看>>
Beautiful Soup多线程爬取斗鱼所有主播信息(改良版)
查看>>
动态库和静态库
查看>>
#34 Search for a Range
查看>>
JVM内存区域划分
查看>>
有时候就是看不进论文-jQuery动画特效篇&MySQL
查看>>
window.open --firefox
查看>>
汽车系统实现--搜索功能
查看>>
小程序获取用户默认地址的代码
查看>>