1. MongoDB 是目前最流行的 NoSQL 数据库之一,使用的数据类型 BSON(类似 JSON)。
  1. PyMongo
  2. Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接。
  3.  
  4. pip 安装
  5. pip 是一个通用的 Python 包管理工具,提供了对 Python 包的查找、下载、安装、卸载的功能。
  6.  
  7. 安装 pymongo:
  8.  
  9. $ python3 -m pip3 install pymongo
  10. 也可以指定安装的版本:
  11.  
  12. $ python3 -m pip3 install pymongo==3.5.1
  13. 更新 pymongo 命令:
  14.  
  15. $ python3 -m pip3 install --upgrade pymongo
  16. easy_install 安装
  17. 旧版的 Python 可以使用 easy_install 来安装,easy_install 也是 Python 包管理工具。
  18.  
  19. $ python -m easy_install pymongo
  20. 更新 pymongo 命令:
  21.  
  22. $ python -m easy_install -U pymongo
  23. 测试 PyMongo
  24. 接下来我们可以创建一个测试文件 demo_test_mongodb.py,代码如下:
  25.  
  26. demo_test_mongodb.py 文件代码:
  27. #!/usr/bin/python3
  28.  
  29. import pymongo
  30. 执行以上代码文件,如果没有出现错误,表示安装成功。
  1. 创建数据库
  2. 创建一个数据库
  3. 创建数据库需要使用 MongoClient 对象,并且指定连接的 URL 地址和要创建的数据库名。
  4.  
  5. 如下实例中,我们创建的数据库 runoobdb :
  6.  
  7. 实例
  8. #!/usr/bin/python3
  9.  
  10. import pymongo
  11.  
  12. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  13. mydb = myclient["runoobdb"]
  14. 注意: MongoDB 中,数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。
  1. 判断数据库是否已存在
  2. 我们可以读取 MongoDB 中的所有数据库,并判断指定的数据库是否存在:
  3.  
  4. 实例
  5. #!/usr/bin/python3
  6.  
  7. import pymongo
  8.  
  9. myclient = pymongo.MongoClient('mongodb://localhost:27017/')
  10.  
  11. dblist = myclient.list_database_names()
  12. # dblist = myclient.database_names()
  13. if "runoobdb" in dblist:
  14. print("数据库已存在!")
  15. 注意:database_names 在最新版本的 Python 中已废弃,Python3.7+ 之后的版本改为了 list_database_names()。
  1. 创建集合
  2. MongoDB 中的集合类似 SQL 的表。
  3.  
  4. 创建一个集合
  5. MongoDB 使用数据库对象来创建集合,实例如下:
  6.  
  7. 实例
  8. #!/usr/bin/python3
  9.  
  10. import pymongo
  11.  
  12. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  13. mydb = myclient["runoobdb"]
  14.  
  15. mycol = mydb["sites"]
  16. 注意: MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
  1. 判断集合是否已存在
  2. 我们可以读取 MongoDB 数据库中的所有集合,并判断指定的集合是否存在:
  3.  
  4. 实例
  5. #!/usr/bin/python3
  6.  
  7. import pymongo
  8.  
  9. myclient = pymongo.MongoClient('mongodb://localhost:27017/')
  10.  
  11. mydb = myclient['runoobdb']
  12.  
  13. collist = mydb. list_collection_names()
  14. # collist = mydb.collection_names()
  15. if "sites" in collist: # 判断 sites 集合是否存在
  16. print("集合已存在!")
  17. 注意:collection_names 在最新版本的 Python 中已废弃,Python3.7+ 之后的版本改为了 list_collection_names()。
  1. 增、删、改、查等操作
  1. Python Mongodb 插入文档
  1. MongoDB 中的一个文档类似 SQL 表中的一条记录。
  1. 插入集合
  2. 集合中插入文档使用 insert_one() 方法,该方法的第一参数是字典 name => value 对。
  3.  
  4. 以下实例向 sites 集合中插入文档:
  5. import pymongo
  6.  
  7. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  8. mydb = myclient["runoobdb"]
  9. mycol = mydb["sites"]
  10.  
  11. mydict = { "name": "RUNOOB", "alexa": "", "url": "https://www.runoob.com" }
  12.  
  13. x = mycol.insert_one(mydict)
  14. print(x)
  15. print(x)
  16. 执行输出结果为:
  17.  
  18. <pymongo.results.InsertOneResult object at 0x10a34b288>
  1. 返回 _id 字段
  2. insert_one() 方法返回 InsertOneResult 对象,该对象包含 inserted_id 属性,它是插入文档的 id 值。
  3. import pymongo
  4.  
  5. myclient = pymongo.MongoClient('mongodb://localhost:27017/')
  6. mydb = myclient['runoobdb']
  7. mycol = mydb["sites"]
  8.  
  9. mydict = { "name": "Google", "alexa": "", "url": "https://www.google.com" }
  10.  
  11. x = mycol.insert_one(mydict)
  12.  
  13. print(x.inserted_id)
  14. 执行输出结果为:
  15.  
  16. 5b2369cac315325f3698a1cf
  17. 如果我们在插入文档时没有指定 _idMongoDB 会为每个文档添加一个唯一的 id
  1. 插入多个文档
  2. 集合中插入多个文档使用 insert_many() 方法,该方法的第一参数是字典列表。
  3. import pymongo
  4.  
  5. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  6. mydb = myclient["runoobdb"]
  7. mycol = mydb["sites"]
  8.  
  9. mylist = [
  10. { "name": "Taobao", "alexa": "", "url": "https://www.taobao.com" },
  11. { "name": "QQ", "alexa": "", "url": "https://www.qq.com" },
  12. { "name": "Facebook", "alexa": "", "url": "https://www.facebook.com" },
  13. { "name": "知乎", "alexa": "", "url": "https://www.zhihu.com" },
  14. { "name": "Github", "alexa": "", "url": "https://www.github.com" }
  15. ]
  16.  
  17. x = mycol.insert_many(mylist)
  18.  
  19. # 输出插入的所有文档对应的 _id 值
  20. print(x.inserted_ids)
  21. 输出结果类似如下:
  22.  
  23. [ObjectId('5b236aa9c315325f5236bbb6'), ObjectId('5b236aa9c315325f5236bbb7'), ObjectId('5b236aa9c315325f5236bbb8'), ObjectId('5b236aa9c315325f5236bbb9'), ObjectId('5b236aa9c315325f5236bbba')]
  1. insert_many() 方法返回 InsertManyResult 对象,该对象包含 inserted_ids 属性,该属性保存着所有插入文档的 id 值。
  2.  
  3. 执行完以上查找,我们可以在命令终端,查看数据是否已插入:

  1. 插入指定 _id 的多个文档
  2. 我们也可以自己指定 id,插入,以下实例我们在 site2 集合中插入数据,_id 为我们指定的:
  3. import pymongo
  4.  
  5. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  6. mydb = myclient["runoobdb"]
  7. mycol = mydb["site2"]
  8.  
  9. mylist = [
  10. { "_id": 1, "name": "RUNOOB", "cn_name": "菜鸟教程"},
  11. { "_id": 2, "name": "Google", "address": "Google 搜索"},
  12. { "_id": 3, "name": "Facebook", "address": "脸书"},
  13. { "_id": 4, "name": "Taobao", "address": "淘宝"},
  14. { "_id": 5, "name": "Zhihu", "address": "知乎"}
  15. ]
  16.  
  17. x = mycol.insert_many(mylist)
  18.  
  19. # 输出插入的所有文档对应的 _id 值
  20. print(x.inserted_ids)
  21. 输出结果为:
  22.  
  23. [1, 2, 3, 4, 5]

  1. Python Mongodb 查询文档
  2. MongoDB 中使用了 find find_one 方法来查询集合中的数据,它类似于 SQL 中的 SELECT 语句。
  3.  
  4. 本文使用的测试数据如下:

  1. 查询一条数据
  2. 我们可以使用 find_one() 方法来查询集合中的一条数据。
  3.  
  4. 查询 sites 文档中的第一条数据:
  5. import pymongo
  6.  
  7. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  8. mydb = myclient["runoobdb"]
  9. mycol = mydb["sites"]
  10.  
  11. x = mycol.find_one()
  12.  
  13. print(x)
  14. 输出结果为:
  15.  
  16. {'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'RUNOOB', 'alexa': '', 'url': 'https://www.runoob.com'}
  1. 查询集合中所有数据
  2. find() 方法可以查询集合中的所有数据,类似 SQL 中的 SELECT * 操作。
  3.  
  4. 以下实例查找 sites 集合中的所有数据:
  5. import pymongo
  6.  
  7. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  8. mydb = myclient["runoobdb"]
  9. mycol = mydb["sites"]
  10.  
  11. for x in mycol.find():
  12. print(x)
  13. 输出结果为:
  14.  
  15. {'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'RUNOOB', 'alexa': '', 'url': 'https://www.runoob.com'}
  16. {'_id': ObjectId('5b2369cac315325f3698a1cf'), 'name': 'Google', 'alexa': '', 'url': 'https://www.google.com'}
  17. {'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'alexa': '', 'url': 'https://www.taobao.com'}
  18. {'_id': ObjectId('5b236aa9c315325f5236bbb7'), 'name': 'QQ', 'alexa': '', 'url': 'https://www.qq.com'}
  19. {'_id': ObjectId('5b236aa9c315325f5236bbb8'), 'name': 'Facebook', 'alexa': '', 'url': 'https://www.facebook.com'}
  20. {'_id': ObjectId('5b236aa9c315325f5236bbb9'), 'name': '知乎', 'alexa': '', 'url': 'https://www.zhihu.com'}
  21. {'_id': ObjectId('5b236aa9c315325f5236bbba'), 'name': 'Github', 'alexa': '', 'url': 'https://www.github.com'}
  1. 查询指定字段的数据
  2. 我们可以使用 find() 方法来查询指定字段的数据,将要返回的字段对应值设置为 1
  3. import pymongo
  4.  
  5. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  6. mydb = myclient["runoobdb"]
  7. mycol = mydb["sites"]
  8.  
  9. for x in mycol.find({},{ "_id": 0, "name": 1, "alexa": 1 }):
  10. print(x)
  11. 输出结果为:
  12.  
  13. {'name': 'RUNOOB', 'alexa': ''}
  14. {'name': 'Google', 'alexa': ''}
  15. {'name': 'Taobao', 'alexa': ''}
  16. {'name': 'QQ', 'alexa': ''}
  17. {'name': 'Facebook', 'alexa': ''}
  18. {'name': '知乎', 'alexa': ''}
  19. {'name': 'Github', 'alexa': ''}
  20. 除了 _id 你不能在一个对象中同时指定 0 1,如果你设置了一个字段为 0,则其他都为 1,反之亦然。
  1. 以下实例除了 alexa 字段外,其他都返回:
  2. import pymongo
  3.  
  4. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  5. mydb = myclient["runoobdb"]
  6. mycol = mydb["sites"]
  7.  
  8. for x in mycol.find({},{ "alexa": 0 }):
  9. print(x)
  10. 输出结果为:
  11.  
  12. {'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'RUNOOB', 'url': 'https://www.runoob.com'}
  13. {'_id': ObjectId('5b2369cac315325f3698a1cf'), 'name': 'Google', 'url': 'https://www.google.com'}
  14. {'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'url': 'https://www.taobao.com'}
  15. {'_id': ObjectId('5b236aa9c315325f5236bbb7'), 'name': 'QQ', 'url': 'https://www.qq.com'}
  16. {'_id': ObjectId('5b236aa9c315325f5236bbb8'), 'name': 'Facebook', 'url': 'https://www.facebook.com'}
  17. {'_id': ObjectId('5b236aa9c315325f5236bbb9'), 'name': '知乎', 'url': 'https://www.zhihu.com'}
  18. {'_id': ObjectId('5b236aa9c315325f5236bbba'), 'name': 'Github', 'url': 'https://www.github.com'}
  1. 以下代码同时指定了 0 1 则会报错:
  2. import pymongo
  3.  
  4. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  5. mydb = myclient["runoobdb"]
  6. mycol = mydb["sites"]
  7.  
  8. for x in mycol.find({},{ "name": 1, "alexa": 0 }):
  9. print(x)
  10. 错误内容大概如下:
  11.  
  12. ...
  13. pymongo.errors.OperationFailure: Projection cannot have a mix of inclusion and exclusion.
  14. ...
  1. 根据指定条件查询
  2. 我们可以在 find() 中设置参数来过滤数据。
  3.  
  4. 以下实例查找 name 字段为 "RUNOOB" 的数据:
  5. import pymongo
  6.  
  7. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  8. mydb = myclient["runoobdb"]
  9. mycol = mydb["sites"]
  10.  
  11. myquery = { "name": "RUNOOB" }
  12.  
  13. mydoc = mycol.find(myquery)
  14.  
  15. for x in mydoc:
  16. print(x)
  17. 输出结果为:
  18.  
  19. {'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'RUNOOB', 'alexa': '', 'url': 'https://www.runoob.com'}
  1. 高级查询
  2. 查询的条件语句中,我们还可以使用修饰符。
  3.  
  4. 以下实例用于读取 name 字段中第一个字母 ASCII 值大于 "H" 的数据,大于的修饰符条件为 {"$gt": "H"} :
  5. import pymongo
  6.  
  7. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  8. mydb = myclient["runoobdb"]
  9. mycol = mydb["sites"]
  10.  
  11. myquery = { "name": { "$gt": "H" } }
  12.  
  13. mydoc = mycol.find(myquery)
  14.  
  15. for x in mydoc:
  16. print(x)
  17. 输出结果为:
  18.  
  19. {'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'RUNOOB', 'alexa': '', 'url': 'https://www.runoob.com'}
  20. {'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'alexa': '', 'url': 'https://www.taobao.com'}
  21. {'_id': ObjectId('5b236aa9c315325f5236bbb7'), 'name': 'QQ', 'alexa': '', 'url': 'https://www.qq.com'}
  22. {'_id': ObjectId('5b236aa9c315325f5236bbb9'), 'name': '知乎', 'alexa': '', 'url': 'https://www.zhihu.com'}
  1. 使用正则表达式查询
  2. 我们还可以使用正则表达式作为修饰符。
  3.  
  4. 正则表达式修饰符只用于搜索字符串的字段。
  5.  
  6. 以下实例用于读取 name 字段中第一个字母为 "R" 的数据,正则表达式修饰符条件为 {"$regex": "^R"} :
  7. import pymongo
  8.  
  9. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  10. mydb = myclient["runoobdb"]
  11. mycol = mydb["sites"]
  12.  
  13. myquery = { "name": { "$regex": "^R" } }
  14.  
  15. mydoc = mycol.find(myquery)
  16.  
  17. for x in mydoc:
  18. print(x)
  19. 输出结果为:
  20.  
  21. {'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'RUNOOB', 'alexa': '', 'url': 'https://www.runoob.com'}
  1. 返回指定条数记录
  2. 如果我们要对查询结果设置指定条数的记录可以使用 limit() 方法,该方法只接受一个数字参数。
  3.  
  4. 以下实例返回 3 条文档记录:
  5. import pymongo
  6.  
  7. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  8. mydb = myclient["runoobdb"]
  9. mycol = mydb["sites"]
  10.  
  11. myresult = mycol.find().limit(3)
  12.  
  13. # 输出结果
  14. for x in myresult:
  15. print(x)
  16. 输出结果为:
  17.  
  18. {'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'RUNOOB', 'alexa': '', 'url': 'https://www.runoob.com'}
  19. {'_id': ObjectId('5b2369cac315325f3698a1cf'), 'name': 'Google', 'alexa': '', 'url': 'https://www.google.com'}
  20. {'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'alexa': '', 'url': 'https://www.taobao.com'}
  1. Python Mongodb 修改文档
  2. 我们可以在 MongoDB 中使用 update_one() 方法修改文档中的记录。该方法第一个参数为查询的条件,第二个参数为要修改的字段。
  3.  
  4. 如果查找到的匹配数据多余一条,则只会修改第一条。
  1. 以下实例将 alexa 字段的值 10000 改为 12345:
  2. import pymongo
  3.  
  4. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  5. mydb = myclient["runoobdb"]
  6. mycol = mydb["sites"]
  7.  
  8. myquery = { "alexa": "" }
  9. newvalues = { "$set": { "alexa": "" } }
  10.  
  11. mycol.update_one(myquery, newvalues)
  12.  
  13. # 输出修改后的 "sites" 集合
  14. for x in mycol.find():
  15. print(x)

  1. update_one() 方法只能修匹配到的第一条记录,如果要修改所有匹配到的记录,可以使用 update_many()。
  2.  
  3. 以下实例将查找所有以 F 开头的 name 字段,并将匹配到所有记录的 alexa 字段修改为 123
  4. import pymongo
  5.  
  6. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  7. mydb = myclient["runoobdb"]
  8. mycol = mydb["sites"]
  9.  
  10. myquery = { "name": { "$regex": "^F" } }
  11. newvalues = { "$set": { "alexa": "" } }
  12.  
  13. x = mycol.update_many(myquery, newvalues)
  14.  
  15. print(x.modified_count, "文档已修改")
  16. 输出结果为:
  17.  
  18. 1 文档已修改
  19. 查看数据是否已修改:

  1. 排序
  2. sort() 方法可以指定升序或降序排序。
  3.  
  4. sort() 方法第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序。
  5. 对字段 alexa 按升序排序:
  6. import pymongo
  7.  
  8. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  9. mydb = myclient["runoobdb"]
  10. mycol = mydb["sites"]
  11.  
  12. mydoc = mycol.find().sort("alexa")
  13. for x in mydoc:
  14. print(x)

  1. 对字段 alexa 按降序排序:
  2. import pymongo
  3.  
  4. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  5. mydb = myclient["runoobdb"]
  6. mycol = mydb["sites"]
  7.  
  8. mydoc = mycol.find().sort("alexa", -1)
  9.  
  10. for x in mydoc:
  11. print(x)

  1. Python Mongodb 删除数据
  2. 我们可以使用 delete_one() 方法来删除一个文档,该方法第一个参数为查询对象,指定要删除哪些数据。
  3. 以下实例删除 name 字段值为 "Taobao" 的文档:
  4. import pymongo
  5.  
  6. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  7. mydb = myclient["runoobdb"]
  8. mycol = mydb["sites"]
  9.  
  10. myquery = { "name": "Taobao" }
  11.  
  12. mycol.delete_one(myquery)
  13.  
  14. # 删除后输出
  15. for x in mycol.find():
  16. print(x)
  17. 输出结果为:

  1. 删除多个文档
  2. 我们可以使用 delete_many() 方法来删除多个文档,该方法第一个参数为查询对象,指定要删除哪些数据。
  3.  
  4. 删除所有 name 字段中以 F 开头的文档:
  5. import pymongo
  6.  
  7. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  8. mydb = myclient["runoobdb"]
  9. mycol = mydb["sites"]
  10.  
  11. myquery = { "name": {"$regex": "^F"} }
  12.  
  13. x = mycol.delete_many(myquery)
  14.  
  15. print(x.deleted_count, "个文档已删除")
  1. 删除集合中的所有文档
  2. delete_many() 方法如果传入的是一个空的查询对象,则会删除集合中的所有文档:
  3. import pymongo
  4.  
  5. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  6. mydb = myclient["runoobdb"]
  7. mycol = mydb["sites"]
  8.  
  9. x = mycol.delete_many({})
  10.  
  11. print(x.deleted_count, "个文档已删除")
  1. 删除集合
  2. 我们可以使用 drop() 方法来删除一个集合。
  3. import pymongo
  4.  
  5. myclient = pymongo.MongoClient("mongodb://localhost:27017/")
  6. mydb = myclient["runoobdb"]
  7. mycol = mydb["sites"]
  8.  
  9. mycol.drop()
  1. 如果删除成功 drop() 返回 true,如果删除失败(集合不存在)则返回 false
  2.  
  3. 我们使用以下命令在终端查看集合是否已删除:
  4.  
  5. > use runoobdb
  6. switched to db runoobdb
  7. > show tables;

吴裕雄--天生自然python学习笔记:Python MongoDB的更多相关文章

  1. 吴裕雄--天生自然HADOOP学习笔记:hadoop集群实现PageRank算法实验报告

    实验课程名称:大数据处理技术 实验项目名称:hadoop集群实现PageRank算法 实验类型:综合性 实验日期:2018年 6 月4日-6月14日 学生姓名 吴裕雄 学号 15210120331 班 ...

  2. 吴裕雄--天生自然MySQL学习笔记:MySQL UPDATE 更新

    如果需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作. 语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法: UPDATE table ...

  3. 吴裕雄--天生自然MySQL学习笔记:MySQL 插入数据

    MySQL 表中使用 INSERT INTO SQL语句来插入数据. 可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 以下为向MySQL数据表插入数据通 ...

  4. 吴裕雄--天生自然MySQL学习笔记:MySQL简介

    MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用 ...

  5. 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子

    1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...

  6. 吴裕雄--天生自然HADOOP学习笔记:基本环境配置

    实验目的 学习安装Java 学习配置环境变量 学习设置免密码登陆的方法 掌握Linux环境下时间同步的配置 实验原理 1.Java的安装 java是大数据的黄金语言,这和java跨平台的特性是密不可分 ...

  7. 吴裕雄--天生自然HADOOP学习笔记:使用yum安装更新软件

    实验目的 了解yum的原理及配置 学习软件的更新与安装 学习源代码编译安装 实验原理 1.编译安装 前面我们讲到了安装软件的方式,因为linux是开放源码的,我们可以直接获得源码,自己编译安装.例如: ...

  8. 吴裕雄--天生自然HADOOP学习笔记:Shell工具使用

    实验目的 学习使用xshell工具连接Linux服务器 在连上的服务器中进入用户目录 熟悉简单的文件操作命令 实验原理 熟悉shell命令是熟悉使用linux环境进行开发的第一步,我们在linux的交 ...

  9. 吴裕雄--天生自然HTML学习笔记:HTML 布局

    网页布局对改善网站的外观非常重要. 请慎重设计您的网页布局. <!DOCTYPE html> <html> <head>  <meta charset=&qu ...

  10. 吴裕雄--天生自然MySQL学习笔记:MySQL 安装

    所有平台的 MySQL 下载地址为: MySQL 下载:https://dev.mysql.com/downloads/mysql/ 注意:安装过程我们需要通过开启管理员权限来安装,否则会由于权限不足 ...

随机推荐

  1. Maven--mirror 和 repository

    参考:http://blog.csdn.net/isea533/article/details/22437511   http://www.cnblogs.com/xdouby/p/6502925.h ...

  2. Ubuntu上运行tensorflow C++的完整例子

    个人博客原文:http://www.bearoom.xyz/2019/08/25/ubuntu-tensorflow-cc-example/ 之前记录的运行Tensorflow的C++接口的例子都是零 ...

  3. Android studio个人常用快捷键

    个人常用重点: 电脑模式不一样需要加上fn键进行切换 Alt+回车/Enter  导入包,实现接口的方法.自动修正 Ctrl+X 删除行 Ctrl+D 复制行 Ctrl+Shift+Space 自动补 ...

  4. 对象创建模式之模块模式(Module Pattern)

    模块模式可以提供软件架构,为不断增长的代码提供组织形式.JavaScript没有提供package的语言表示,但我们可以通过模块模式来分解并组织代码块,这些黑盒的代码块内的功能可以根据不断变化的软件需 ...

  5. Qt QRect与QRectF的区别

    一直在与QRect和QRectF打交道.甚至在使用过程中因为QRect而出现了致命的Bug.因为QRect在数据存储表示上有一个很大的“历史遗留问题”! QRect Class   也就是说,对于QR ...

  6. drf偏移分页组件-游标分页-自定义过滤器-过滤器插件django-filter

    drf偏移分页组件 LimitOffsetPagination 源码分析:获取参数 pahenations.py from rest_framework.pagination import Limit ...

  7. 数组,字符串方法总结 Unicode 数字

    String.prototype.charCodeAt(index) 就是返回字符串中下标单个数值  对应的编码表的10进制表示数值 方法返回0到65535之间的整数,表示给定索引处的UTF-16代码 ...

  8. Ubuntu源码编译安装tensorflow

    ubuntu14 cuda9.0_384.81 驱动版本384.90  cudnn7.2 tensorflow1.8 https://blog.csdn.net/pkokocl/article/det ...

  9. lower_bound()和upper_bound()用法详解

    lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. lower_bound( begin,end,num):从数组的begin位置到end ...

  10. POJ 3080 Blue Jeans (求最长公共字符串)

    POJ 3080 Blue Jeans (求最长公共字符串) Description The Genographic Project is a research partnership between ...