mongodb和pymongo创建数据库和基础操作

1. MongoDB

下载地址:https://www.mongodb.com/download-center#community
MongoDB是一种介于关系型和非关系型中间的数据库。它是文档型数据库(一个文档包含多个键/值对),多个文档组成集合,多个集合组成数据库。一个MongoDB 实例可以承载多个数据库。这里集合的概念类似关系型数据库中的表。MongoDB的优势在于数据存储与交互非常灵活,采用类似JSON格式,能灵活地创建索引以及完成SQL能做的几乎所有查询。此外它还是一个支持分布式的数据库,能自动处理分片实现负载均衡,并且支持使用MapReduce进行复杂的聚合操作。


安装完MongoDB之后我们需要创建一个文件夹存放数据库

MongoDB将数据目录存储在 db 目录下。但是这个数据目录不会主动创建。

打开cmd -> cd c:\data -> mkdir db  然后在创建log文件夹 mkdir log


然后可以启动MongoDB

cd C:\Program Files\MongoDB\Server\3.4\bin

mongod -dbpath C:\data\db

链接成功后新开一个cmd窗口,切换到bin目录下,键入mongo打开一个客户端


常用操作:

(1)查看所有数据库: show dbs

(2)创建数据库:use dbname (如果数据库不存在,则创建数据库,否则切换到指定数据库)

(3)插入数据:db.collection.insert({key:value})

(4)更新数据:db.collection.save({key:value}) 如果是已经存在的key则更新value,否则执行插入,insert对已经存在的不做操作

       db.collection.update({key_name : key},{value_name : value})

(5)删除:db.collection.remove()删除所有数据,db.collection.remove({key:value})删除指定数据,db.collection.drop()删除这个collection

(6)查找:db.collection.find({key:value}).pretty()返回所有,并且展示地好看点,db.collection.findOne()返回第一条, find里可以多个key查询,find({key1: value1, key2: value2})

其他常见操作: http://www.runoob.com/mongodb/mongodb-query.html


2. PyMongo

PyMongo提供了在python里操作MongoDB的工具,官方教程:http://api.mongodb.com/python/current/tutorial.html


(1)首先创建一个mongoclient,默认是本地端口

import pymongo

client = pymongo.MongoClient() 

如果是连其他服务器端口

client = pymongo.MongoClient('192.xxx.x.xxx')  # 创建一个连接  
client['test'].authenticate('username', 'password')

(2)创建数据库,类似字典引用

db = client['my_database']


(3)创建collection

collection = db['my_collection']
注意MongoDB是惰性的,即在插入第一条数据之前,数据库和collection都不会真的生成

(4)插入一条文档,文档在MongoDB中的存储格式是json,在pymongo中我们一般传入字典。


dic = {'name':'serena',"id":1532}
collection.insert_one(dic)

(5)插入多条文档,可以传入list of dict, 即一个字典的列表,每个元素是一条记录,然后用insert_many()

list_of_records = [{'name': 'amy', 'id': 1798},{'name': 'bob', 'id': 1631}]
collection.insert_many(list_of_records)


(6)查询记录,find_one(), find()


打印所有记录

for record in collection.find():
    pprint.pprint(record)


查询一条

collection.find_one({'name': 'amy'})


查询所有满足条件的

collection.find({'name': 'amy'})


(7)count

collection.count()

collection.find().count()





<think>好的,我现在需要帮助用户了解Python中的列表、元组、集合字典。首先,我应该回忆这些数据结构的基本概念区别。用户可能想知道它们各自的定义、特点以及何时使用它们。根据提供的引用内容,我需要确保信息准确,并引用正确的来源。 首先,列表(List)应该是有序、可变的,支持重复元素。用户可能对如何创建操作列表感兴趣,比如添加、删除元素。引用里提到列表用方括号,可以动态调整大小,所以应该强调这些点。 然后是元组(Tuple),它列表类似但不可变。需要说明元组用圆括号,适用于不希望数据被修改的场景,比如作为字典的键。引用23都提到了元组的不可变性,需要强调这一点。 接下来是集合(Set),无序且元素唯一。用户可能不太清楚集合的应用场景,比如去重或集合运算。引用里提到集合用花括号,所以需要说明如何创建使用集合的方法,如并集、交集等。 最后是字典(Dict),键值对结构,无序且键必须唯一。用户可能想知道如何访问、添加或修改键值对。引用3详细说明了字典的创建操作函数,应该涵盖这些内容,比如使用get方法或直接通过键访问。 在比较部分,需要将四者的特性列出来,比如可变性、有序性、重复元素表示符号。这样用户能一目了然地看到区别。应用场景部分应该结合各自的特点举例,比如列表用于数据收集,元组用于固定配置,集合用于去重,字典用于键值存储。 用户可能还会关心如何选择合适的数据结构,这部分需要结合引用1中的建议,根据需求选择高效的结构。例如,频繁修改用列表,需要唯一性用集合,快速查找用字典。 需要确保回答结构清晰,分点说明每个数据结构的特点、操作方法示例代码。同时,检查LaTeX格式是否符合要求,行内公式用$...$,独立公式用$$...$$,但当前内容可能涉及较少数学公式,主要关注代码块结构。 最后生成相关问题时要围绕用户可能进一步想了解的内容,比如性能对比、嵌套使用、转换方法等。确保问题覆盖用户可能深入的方向,帮助他们继续学习。 现在需要整合这些思考,按照用户的要求分章节回答,使用中文,语法正确,引用正确来源,并在末尾添加相关问题。</think>### Python列表、元组、集合字典详解 #### 一、列表(List) **特点** 1. **有序可变**:元素按插入顺序排列,支持增删改操作[^2]。 2. **允许重复**:同一元素可多次出现。 3. **灵活存储**:可包含不同类型的数据(如混合整数、字符串等)。 **使用方法** - **创建**:用方括号 `[]` 或 `list()` 函数。 ```python my_list = [1, "a", True] ``` - **操作** - 添加元素:`append()`、`insert()`、`extend()` - 删除元素:`pop()`、`remove()`、`del` - 切片访问:`my_list[0:2]` - 排序:`sort()` **示例** ```python fruits = ["apple", "banana"] fruits.append("orange") # ["apple", "banana", "orange"] fruits[1] = "grape" # ["apple", "grape", "orange"] ``` --- #### 二、元组(Tuple) **特点** 1. **有序不可变**:创建后元素不可修改[^2][^3]。 2. **轻量安全**:内存占用小,适合存储固定配置或常量。 3. **可哈希**:可作为字典的键。 **使用方法** - **创建**:用圆括号 `()` 或 `tuple()` 函数。 ```python my_tuple = (1, "a", True) ``` - **操作** - 索引访问:`my_tuple[0]` - 不可修改元素,但可嵌套可变对象(如列表)。 **示例** ```python config = ("localhost", 8080) # config[0] = "127.0.0.1" # 会报错 ``` --- #### 三、集合(Set) **特点** 1. **无序唯一**:元素不重复且无顺序。 2. **高效查询**:基于哈希表实现,`in` 操作时间复杂度为 $O(1)$。 3. **集合运算**:支持并集(`|`)、交集(`&`)等。 **使用方法** - **创建**:用花括号 `{}` 或 `set()` 函数(空集合必须用 `set()`)。 ```python my_set = {1, 2, 3} ``` - **操作** - 添加元素:`add()` - 删除元素:`remove()`、`discard()` - 去重:`set([1,1,2])` → `{1,2}` **示例** ```python a = {1, 2} b = {2, 3} print(a & b) # {2} ``` --- #### 四、字典(Dict) **特点** 1. **键值对存储**:键唯一且不可变(如字符串、数字、元组)[^3]。 2. **无序可变**:Python 3.7+ 中插入顺序保留。 3. **快速查找**:通过键直接访问值,时间复杂度 $O(1)$。 **使用方法** - **创建**:用花括号 `{}` 或 `dict()` 函数。 ```python my_dict = {"name": "Alice", "age": 30} ``` - **操作** - 添加/修改:`my_dict["gender"] = "female"` - 删除键值对:`del my_dict["age"]` - 获取键列表:`keys()` - 安全访问:`get("key", default_value)` **示例** ```python scores = {"math": 90, "english": 85} scores["physics"] = 95 # 添加新键值对 print(scores.get("chemistry", 0)) # 输出0(默认值) ``` --- #### 五、四者对比 | 特性 | 列表 | 元组 | 集合 | 字典 | |--------------|------------|------------|------------|------------| | **可变性** | 可变 | 不可变 | 可变 | 可变 | | **有序性** | 有序 | 有序 | 无序 | 无序(Python 3.7+ 有序) | | **重复元素** | 允许 | 允许 | 不允许 | 键不允许重复 | | **表示符号** | `[]` | `()` | `{}` | `{key: value}` | --- #### 六、应用场景 1. **列表**:数据收集(如日志记录)、需要频繁修改的场景。 2. **元组**:配置参数、函数返回多个值、字典键。 3. **集合**:去重、成员快速判断、集合运算。 4. **字典**:键值映射(如数据库记录)、JSON数据解析。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值