# 安装
pip install pymongo
# 操作数据库
# 创建连接
pymongo.mongo_client.MongoClient(host='localhost', port=27017, document_class=dict, tz_aware=False, connect=True, **kwargs)
其中 tz_aware 为 False 返回 naïve 的 datetime 实例,为 True 返回带有 timeinfo
的 datetime 实例,默认是 False
两种连接方式,一种使用构建对象方式,一种使用 uri 方式连接。
下面的代码是本地连接方式
from pymongo import MongoClient | |
client = MongoClient(host='localhost', port=27017) # 建立客户端对象 | |
# 选择一个数据库,名称为 python,没有则新建 | |
db = client['python'] | |
# 选择一个集合,名称为 std,没有则新建 | |
col = db['stu'] | |
col.insert_one({'a': 'b'}) | |
for i in col.find(): | |
print(i) |
如果反复运行上面的程序,则会进行反复插入,插入的每条文档的_id 字段是不同的。如下:
# 创建数据库
from pymongo import MongoClient | |
from pymongo.database import Database | |
client = MongoClient(host='localhost', port=27017, tz_aware=True) # 建立客户端对象 | |
# 方式一 | |
db = client.get_database("python") | |
# 方式二 | |
db = client["python"] | |
# 删除数据库 | |
client.drop_database('python') | |
# 打印所有数据库的名称 | |
for db_name in client.list_database_names(): | |
print(db_name) |
# 操作集合
from pymongo import MongoClient | |
client = MongoClient(host='localhost', port=27017, tz_aware=True) # 建立客户端对象 | |
db = client.get_database("shsxt") | |
# 创建一个集合,如果存在就会报错,所以不推荐此种方式 | |
# db.create_collection("collection3") | |
# 获取集合,如果没有会自动创建集合 | |
collection = db.get_collection("user2") | |
# 获取集合,如果没有会自动创建集合 | |
collection = db['user2'] | |
# 获取集合名称,返回 list | |
collection_names = db.list_collection_names() | |
for name in collection_names: | |
print('集合名称:', name) | |
# 删除集合,返回字典,即使该集合不存在也不会报错 | |
print(db.drop_collection('col')) |
# 操作索引
尚未清楚索引的作用
创建唯一索引时报错了
import pymongo | |
from pymongo import MongoClient | |
client = MongoClient(host='localhost', port=27017, tz_aware=True) # 建立客户端对象 | |
collection = client.get_database('shsxt').get_collection('user2') | |
# 创建升序索引 | |
r = collection.create_index([('name', pymongo.ASCENDING)]) | |
print(r) | |
# 创建降序索引 | |
r = collection.create_index([('age', pymongo.DESCENDING)]) | |
print(r) | |
# 创建混合索引 | |
r = collection.create_index([('name', pymongo.ASCENDING), ('status', pymongo.DESCENDING)]) | |
print(r) |