ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

python连接mysql、mongodb、redis

2019-08-10 10:03:09  阅读:182  来源: 互联网

标签:name python mongodb age sql redis cursor res table


python连接mysql

安装pymysql

导包:

import pymysql

建立数据库的连接
参数:主机名、用户名、密码、数据库名

conn = pymysql.connect('localhost','root','root','database')

获取游标

cursor = conn.cursor()

所有的增删改查都写在sql中
编写sql语句

sql = ' '

#动态查询
sql = 'select * form stu where id = %d'%(d)

#sql语句过多是比如建表,嵌套查询可以用如下写法
sql = """
   #sql语句可回车
"""

执行sql语句

cursor.execute(sql)

开启事物

db.begin()
try:
    cursor.execute(sql)
    db.commit()#修改需要提交,查询不需要提交
    print("cg")
except Exception as e:#pymysql.Error=>Exception
    print(e)

    #回滚
    db.rollback()

获取单条数据

res = cursor.fetchone()

获取所有的结果

res = cursor.fetchall()

获取影响行数

num = cursor.rowcount()

关闭游标和数据库

cursor.close()
conn.close()

python连接mongoDB

安装 pip install pymongo

导包

import pymongo

建立连接

connet = pymongo.MongoClient('localhost',27017)  #指定地址端口
connet = pymongo.MongoClient() #默认地址端口
connet = pymongo.MongoClient('mongodb://127.0.0.1:27017/')#url形式

获取所有的数据库名

all_database=connet.list_database_names()

获取数据库

database = connet.school
#字典方式获取,防止与系统变量重复
 database = connet['school']

#获取集合又称为表
table = database.student
 table = database['student']

下面两种插入方式都python3.6和3.7都可以用,只是有警告

#添加文档(插入)python3.6:
table.insert({"name":"abc", "age":19})
table.insert([{"name":"abc1", "age":19},{"name":"abc2", "age":19}])

#python3.7后建议使用如下方式
#插入单条,可以后加inserted_id返回id,不加返回一个InsertOneResult的实例
res = table.insert_one({"name":"ll","age":25}).inserted_id
#插入多条
res = table.insert_many([{"name":"dasf","age":30},{"name":"fsaf","age":45}])
dict = [{"name":"tuyh","age":87},{"name":"oikujh","age":65}]
res= table.insert_many(dict)

查看文档

res=table.find() #fine可以指定查询条件

#遍历
for row in res:
    print(row)
    name = row.get('name',(None|'no key'))#get()存在返回内容,不存在返回None或设置后的no key,直接用不存在会报错
    print(name)

统计查询

res = table.find({"age":{"$gt":20}}).count()

排序

res = table.find().sort("age")#升序
res = table.find().sort("age", pymongo.DESCENDING)#降序

分页查询

res = table.find().skip(3).limit(5)

更新文档

#upset未找到是否插入,multi是否改变多条
collection.update({"name":"lilei"},{"$set":{"age":25}},upsert=False,multi=False)
#python3.7 后仍然建议使用updata_one或者updata_many修改一条或者多条

#upset未找到是否插入
res = table.update_one({"dasf":'okk'},{'$set':{'name':'666','age':166}},upsert=False)
res = table.update_many({"dasf":'okk'},{'$set':{'name':'666','age':166}},upsert=False)

删除文档

#multi默认删除多条
res = table.remove({'name':'fsaf'},multi=False)
#python3.7 后
res = table.delete_one({'name':'fsaf'})
res = table.delete_many({'name':'fsaf'})

python连接redis

导入

import redis

默认连接到本机,端口是6379 数据库是0

r = redis.Redis()
#也可以指定
r = redis.Redis(host="localhost", port=6379,db=1)

设置key name=okk 100秒过期

r.set('name','okk',ex=100)

获取value

name = r.get('name')
print(name.decode()) #换编码 不加输出 b'okk'  加了输出 okk

list使用

r.lpush('mylist1',1,9,34,78)

把数组插入进去

ll = [1,8,0,9]
#把数组对象序列化,把对象变成字符串
import json
ll_str = json.dumps(ll)
print(ll_str,type(ll_str))   #[1, 8, 0, 9] <class 'str'>
r.set('myll',ll_str)
myll=r.get('myll').decode()

#反序列化,把字符变为list
myll_obj = json.loads(myll)
print(myll_obj,type(myll_obj))   #[1, 8, 0, 9] <class 'list'>

使用管道一次性插入

pipe = r.pipeline()
pipe.set('age',18)
pipe.set('class','ssdaf')

#执行管道里面所以命令
pipe.execute()

标签:name,python,mongodb,age,sql,redis,cursor,res,table
来源: https://blog.csdn.net/qq_41509057/article/details/99054206

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有