- 最近鼓捣各种数据库,MySQL、sqlite3、mongo,但是感觉工作中很少能用到,既不用爬虫,工作中也是常用hive,诶。待哪一天用到,好翻翻笔记
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import os
import re
import warnings
import time
warnings.filterwarnings('ignore')
'''
(1) pymong基本语法
'''
import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
# 连接mongo数据库
myclient.list_database_names()
#查看数据库
db = myclient['去哪儿网']
#查看具体的数据库
db.list_collection_names()
#查看数据库表名
table = db['table01']
#查看表内容 列表索引式写法
table.find_one()
#单行查询
table.find()
#表格数据查询 生成器
for i in table.find():
print(i)
#遍历查询表中的每行数据
tb2 = db['table02']
#向数据库插入 新表
dic = {'a':222,'语言':'python','对象':'love'}
x = tb2.insert_one(dic)
#单条数据插入表格
tb2.insert_many([{'a':1,'语言':'c','对象':'like'},
{'a':3,'语言':'R','对象':'hit'}])
#多条数据插入 列表字典格式插入
x.inserted_id
#查看插入数据的id
tb2.delete_one({'a':222})
#删除单条数据
tb2.delete_many({'a':222})
#删除多条条数据
'''
(2) mongo数据库,模拟数据导入。我随机的100万
'''
strattime = time.time()
df = pd.DataFrame({'date':pd.date_range(start = '19090101',freq='H',periods=1000000),
'high_price':np.random.random(1000000)*100,
'low_price':np.random.random(1000000)*80})
df['price_diff'] = df['high_price'] - df['low_price']
lst = df.to_dict(orient='record')
#pandas 数据格式转换为列表字典格式
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
db = myclient['test']
tb = db['equity_price']
tb.insert_many(lst)
print('导入mongo数据库耗时:%.2f' % (time.time() - strattime))
#导入mongo数据库耗时:27.92
'''
(3) mongo数据库的数据导出
'''
starttime = time.time()
#起始时间
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
db = myclient['test']
tb = db['equity_price']
lst = []
for i in tb.find():
lst.append(i)
df = pd.DataFrame(lst)
del df['_id']
print('数据读取耗时:%.2f ,数据条目数:%i' % ((time.time() - starttime),len(df)))
df.head()
可以看出数据导出还是挺快的。