一、python操作mongodb
先来看下mongodb的基础语法,因为本人用到的不多,所以只是简单整理下mongodb基本语法
01.python写入mongodb
import pymongo
from pymongo import MongoClient
#连接本地数据库
connection = MongoClient('localhost')
#连接本地数据库demo,没有就创建
db = connection.demo
#创建集合employees
emp = db.employees
#根据情况,清空所有
#emp.delete_many({})
emp.remove(None)
#创建一条数据
zhangsan = {
'name':'张三',
'age': 30,
'sex':'男',
'contact':{
'email':'abc.qq.com',
'emai2':'def.163.net'
}
}
#执行插入命令
emp.insert_one(zhangsan)
#插入多条数据
lisi = {
'name':'李四',
'habit':{'habit':'eat',
'habit2':'sleep'}
}
wangwu = {
'name':'王五',
'age': 20,
'sex':'男'
}
zhangsan1 = {
'name':'张三1',
'age': 30,
'sex':'男',
'contact':{
'email':'abcd.qq.com',
'emai2':'def.163.net'
}
}
zhaoliu = {
'name':'赵六',
'age': 20,
'sex':'男'
}
emp.insert_many([zhangsan1,lisi,wangwu,zhaoliu])
02.python查询mongodb
import pymongo
from pymongo import MongoClient
#连接mongodb
conn = MongoClient('localhost')
#连接库
db = conn.demo
#连接集合
emp = db.employees
#查询内容
#1.无条件查询
# cursor = emp.find()
# for each in cursor:
# print(each)
#有条件查询
cursor = emp.find({'name':'张三'})
#print(list(cursor)[0])
# for each in cursor:
# print(each)
#若需要表示条数,用enumerate
for i,v in enumerate(cursor):
print(i+1,v)
#3.多条件查询
# cursor = emp.find(
# {'name':{
# '$in':['张三','李四']
# }}
# )
# for each in cursor:
# print(each)
#and 查询 且
# cursor = emp.find({
# 'name':{'$in':['张三','李四']},
# 'age':30
# })
# or 查询 或
# cursor = emp.find({
# '$or':[
# {'name':{'$in':['张三','李四']}},
# {'age':{'$lt':25}}
# ]
# })
# # 子条件查询
cursor = emp.find({
'contact.emai1':'abcd.qq.com'
})
for each in cursor:
print(each)
03.python更新mongodb
import pymongo
from pymongo import MongoClient
#连接mongodb
conn = MongoClient('localhost')
#连接库
db = conn.demo
#连接集合
emp = db.employees
#$set,更新操作
# emp.update_one(
# {'name':'王五'},
# {'$set':
# {'name':'王舞',
# 'sex':'女汉子'
# }}
# )
#
# #更新多条
# #无条件
# emp.update_many(
# {},
# {'$inc':{
# {'age':1}
# }}
# )
#
# #有条件
# emp.update_many(
# {'name':{'$in':['张三','李四']}},
# {'$set':{'age':25}},
# upsert=True
# )
#生成时间
# emp.update_many(
# {'name':{'$in':['张三','王五']}},
# {'$currentDate':{
# 'create_time':True, # True相当于 {'$type':'date'}
# 'mod_time':{'$type':'timestamp'}
# }}
# )
# emp.update_one(
# {'name':'钱八'},#若钱八不存在,配合update=True可以新增
# {'$currentDate':{
# 'create_time':True,
# 'mod_time':{'$type':'timestamp'}
# }},
# upsert = True,array_filters=None
# )
# 更新字段内的字段
result = emp.update_one(
{'name':'李四'},
{'$set':{
'habit':{
'habit1':'学习',
'habit2':'运动'
}
}}
)
print(result.raw_result)
04.python删除mongodb
import pymongo
from pymongo import MongoClient
#连接mongodb
conn = MongoClient('localhost')
#连接库
db = conn.demo
#连接集合
emp = db.employees
#删除name=‘张三1’的数据
emp.delete_one({'name':'张三1'})
#删除所有'age':{'$lt':40}的数据
result= emp.delete_many({'age':{'$lt':40}})
print(result.raw_result)
05.查询同时更新
import pymongo
from pymongo import MongoClient
#连接mongodb
conn = MongoClient('localhost')
#连接库
db = conn.demo
#连接集合
emp = db.employees
result = emp.find_one_and_update(
{},
{
'$set':{'locked':1},
'$inc':{'age':10}
},
projection={'age':True,'name':True}, #显示的key
sort=[('age',pymongo.DESCENDING)], #排序
return_document=pymongo.ReturnDocument.BEFORE #更改前还是更改后
)
print(result)
06.加载外部数据到mongodb
import pymongo
import json
from pymongo import MongoClient
#1.连接本地数据库
conn = MongoClient('localhost')
#2.连接本地数据库demo,没有就创建
db = conn.newdb
#3.创建新集合
col = db.zips
#4.打开json文件
file = open('zips.json')
#迭代添加
for each in file:
eachline = json.loads(each)
col.insert_one(eachline)
#关闭文件
file.close()
二、python操作mysqlmysql基本操作
01.连接mysql并读取数据
#导入模块
import pymysql
import json
#第一步:连接到mysql数据库
conn = pymysql.connect(host='localhost',user='root',password='123456',db='mycommodity',charset="utf8")
#第二 步:创建游标对象
cursor = conn.cursor() #cursor当前的程序到数据之间连接管道
# #第三步:组装sql语句
sql = 'select * from commodity'
# sql = "select c_id,c_name,c_inprice from commodity where c_inprice>(select avg(c_inprice) from commodity where c_type=(select ct_id from commoditytype where ct_name='玩具'))"
#第四部:执行sql语句
cursor.execute(sql)
#第五步:处理结果集
#获取一条数据
# one = cursor.fetchone()
# print(one)
#获取多条数据
# many = cursor.fetchmany(3)
# print(many)
#获取所有数据
all = cursor.fetchall()
for each in all:
print(json.dumps(each, ensure_ascii=False))
# print(type(each),each)
fields = cursor.description
# print(fields)
head = []
for field in fields:
head.append(field[0])
print(head)
#第六步:关闭所有的连接
#关闭游标
cursor.close()
#关闭数据库
conn.close()
02.连接mysql并添加数据
#导入模块
import pymysql
#第一步:连接到mysql数据库
conn = pymysql.connect(host='localhost',user='root',password='123456',db='mycommodity',charset="utf8")
#第二 步:创建游标对象
cursor = conn.cursor() #cursor当前的程序到数据之间连接管道
# #第三步:组装sql语句
sql = "INSERT INTO `commodity` VALUES (null, '电脑桌', '北京', '6', '100', '200', '200')"
#第四步:执行sql语句
cursor.execute(sql)
# !!!!!!!数据提交 commit() ,不提交数据库没有信息
conn.commit()
#第五步:处理结果集
#第六步:关闭所有的连接
#关闭游标
cursor.close()
#关闭数据库
conn.close()
03.自定义函数操作数据库
import pymysql
# 定义连接到mysql数据库的函数,返回连接对象
def getCon(db_name):
conn = pymysql.connect(host='localhost', user='root', password='123456', db=db_name, charset="utf8")
return conn
# 定义添加数据函数
def insertData(db_name,table_name,data):
conn = getCon(db_name)
# 第二 步:创建游标对象
cursor = conn.cursor() # cursor当前的程序到数据之间连接管道
#第三步:组装sql语句
sql = 'insert into '+ table_name +' values'+ data
cursor.execute(sql)
# 提交sql语句执行操作
conn.commit()
print("成功添加了{}条数据".format(cursor.rowcount))
# 关闭连接
cursor.close()
conn.close()
data1 = (0, '书桌', '南京', '6', '50', '100', '100')
insertData('mycommodity','commodity',str(data1))
04.自定义函数修改数据
import pymysql
# 定义连接到mysql数据库的函数,返回连接对象
def getCon(db_name):
conn = pymysql.connect(host='localhost', user='root', password='123456', db=db_name, charset="utf8")
return conn
# 修改数据
def updateData(db_name,table_name,conditions):
conn = getCon(db_name)
# 第二 步:创建游标对象
cursor = conn.cursor() # cursor当前的程序到数据之间连接管道
#第三步:组装sql语句
sql = 'update '+ table_name +conditions
print(sql)
cursor.execute(sql)
# 提交sql语句执行操作
conn.commit()
print("成功更新了{}条数据".format(cursor.rowcount))
# 关闭连接
cursor.close()
conn.close()
# 定义 update 的条件
condition = " set c_name = '大桌字' where c_id=70"
updateData('mycommodity','commodity',condition)