python操作库_Python操作各种数据库

我们在写代码的时候,经常会操作数据库,增删改查,数据库有很多类型,关系型数据库和非关系数据库,这里咱们介绍一下python怎么操作mysql、redis和mongodb。

一、操作mysql

python3中操作mysql数据需要安装一个第三方模块,pymysql,使用pip install pymysql安装即可,在python2中是MySQLdb模块,在python3中没有MySQLdb模块了,所以使用pymysql。

import pymysql

# 创建连接,指定数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='data',charset='utf8')

# 创建游标

cursor = conn.cursor()

# 执行SQL,并返回收影响行数

effect_row = cursor.execute("update students set name = 'niuhy' where id = 1;")

# 执行SQL,并返回受影响行数

#effect_row = cursor.execute("update students set name = 'niuhy' where id = %s;", (1,))

# 执行SQL,并返回受影响行数

effect_row = cursor.executemany("insert into students (name,age) values (%s,%s); ", [("hangyang",18),("12345",20)])

#执行select语句

cursor.execute("select * from students;")

#获取查询结果的第一条数据,返回的是一个元组

row_1 = cursor.fetchone()

# 获取前n行数据

row_2 = cursor.fetchmany(3)

# 获取所有数据

row_3 = cursor.fetchall()

# 提交,不然无法保存新建或者修改的数据

conn.commit()

# 获取最新自增ID

new_id = cursor.lastrowid

print(new_id)

# 关闭游标

cursor.close()

# 关闭连接

conn.close()

上面的操作,获取到的返回结果都是元组,如果想获取到的结果是一个字典类型的话,可以使用下面这样的操作

import pymysql

# 创建连接,指定数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='data',charset='utf8')

# 创建游标

cursor = conn.cursor()

cursor = coon.cursor(cursor=pymysql.cursors.DictCursor)#需要指定游标的类型,字典类型

# 执行SQL

cursor.execute("select * from user;")

#获取返回结果,这个时候返回结果是一个字典

res = cursor.fetchone()#返回一条数据,如果结果是多条的话

print(res)

res2 = cursor.fetchall()#所有的数据一起返回

二、操作redis

redis是一个nosql类型的数据库,数据都存在内存中,有很快的读写速度,python操作redis使用redis模块,pip安装即可

import redis

r = redis.Redis(host='127.0.0.1',port=6379,db=0)#指定连接redis的端口和ip以及哪个数据库

r.set('name', 'value')#set string类型的值

r.setnx('name2', 'value')#设置的name的值,如果name不存在的时候才会设置

r.setex('name3', 'value', 3)#设置的name的值,和超时时间,过了时间key就会自动失效

r.mset(k1='v1',k2='v2')#批量设置值

r.get('name')#获取值

print(r.mget('k1','k2'))#批量获取key

r.delete('name')#删除值

r.delete('k1','k2')#批量删除

#======下面是操作哈希类型的

r.hset('hname', 'key', 'value')#set 哈希类型的值

r.hset('hname', 'key1', 'value2')#set 哈希类型的值

r.hsetnx('hname','key2','value23')#给name为hname设置key和value,和上面的不同的是key不存在的时候

#才会set

r.hmset('hname',{'k1':'v1','k2':'v2'})#批量设置哈希类型的key和value

r.hget('name', 'key')#获取哈希类型的值

print(r.hgetall('hname'))#获取这个name里所有的key和value

r.hdel('hname','key')#删除哈希类型的name里面指定的值

print(r.keys())#获取所有的key

三、操作mongodb

mongodb和redis一样,也是一个nosql类型的数据库,它和redis的区别是,redis把整个数据都放在内存,而mongodb是把数据放在磁盘上的。 python操作mongodb使用pymongo模块,pip安装即可,操作如下:

import pymongo

conn = pymongo.MongoClient(host='211.149.218.16',port=27017)#连接mongodb

db = conn.szz#选择哪个数据库

db.authenticate('admin','123456')#如果有账号密码的话,指定账号密码

collection = db.stus#使用数据库里面哪个集合,就相当于mysql里面的表

collection.drop()#删除指定的集合,也就是删除这个表

stu={

'name':'牛牛',

'age':38,

'sex':'男'

}

stus = [

{'name':'python',

'addr':'北京',

'sex':'未知',

'age':38

},

{

'name':'mongodb',

'addr':'USA',

'money':18.01,

'age':20

}

]

collection.save(stu)#插入单条数据

collection.insert(stus)#插入单条和多条,如果是多条的话,传入的就是一个list

=====比较操作符=======

# $lt

# 小于

# $lte

# 小于等于

# $gt

# 大于

# $gte

# 大于等于

# $ne

# 不等于

$set 获取前面的结果集

collection.update({'name':'牛牛'},{'name':'niuhy','age':20})#更新数据

collection.update({'name':'牛牛'},{'$set':{'addr':'河南'}})#在原来数据的基础上修改

collection.update({'name':'牛牛'},

{'$set':{'addr':'河南'}},

multi=True)#multi参数的作用是如果有多个结果的话,是否全部修改

collection.remove({'name':'牛牛'})#删除指定的数据,如果不传入参数,删除的是全部的数据

collection.remove()#删除全部数据

data = collection.find({'name':'mongodb'})#查询指定的数据

all_data = collection.find()#不写参数就是查询所有的数据

my_data = collection.find({'age':{'$gte':18}})#查询大于18岁的

for d in my_data:#获取数据,所有查询数据都需要使用循环来获取

print(d)#每个元素都是一个字典

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

郭德纲

坚持分享的人最可爱,转起!

我为 http://openskill.cn 「带盐」,每天收获一小点,快乐生活一整天!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值