python 数据存储

匿名 (未验证) 提交于 2019-12-02 22:11:45
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CoolScript/article/details/90286767

python常用数据存储方法

txt

with open('test.txt','w',encoding='utf8') as f:     f.write('sdfasdf'+'\n') 

json

object = json.loads(jsonstr) : json字符串 转化为 python对象

str = json.dumps(objects,indent=2) :python对象 转化为 json字符串

注意:输出中文要设置ensure_ascii为False,还要注意编码

with open('test.txt','w',encoding='utf8') as f:     f.write(json.dumps(objects,indent=2,ensure_ascii=False)) 

csv

用csv模块写,用pandas.read_csv() 读取很方便

import csv from pandas import read_csv  with open('csv.csv', 'w', encoding='utf8') as f:     writer = csv.writer(f, delimiter=',')     writer.writerow(['id', 'name', 'age'])     writer.writerows(         (['1', 'bob', '12'],          ['2', 'amy', '21'])     )  # 读写字典格式 with open('dict.csv', 'w', encoding='utf8') as f:     field_headers = ['id', 'name', 'age']     writer = csv.DictWriter(f, fieldnames=field_headers)     writer.writeheader()     writer.writerow({         'id': 3,         'name': 'Mike',         'age': 22     })   df = read_csv('csv.csv') print(df)  

msyql

安装pymysql

pip install PyMySQL 

To use “sha256_password” or “caching_sha2_password” for authenticate,

you need to install additional dependency:

pip install PyMySQL[rsa] 

连接

单实例连接

db = pymysql.connect(host='127.0.0.1', port=3306,                          user='root', password='huajian') cursor = db.cursor() 

建库建表

cursor.execute(f'create database if not exists {db_name};') cursor.execute(f'use {db_name};') cursor.execute(     f'create table if not exists {table_name}(id varchar(20), sex varchar(30),name varchar(20), age int, primary key (id));')  

插入

data = {     'id': '465674646',     'name': 'Mike',     'age': 25,     'sex': 'Male' }  # ================================================ # insert ignore 使用唯一约束情况下,存在则不插入,保持原来数据 # =================================================  table_name = 'xxxx' keys = ','.join(data.keys()) values = ','.join(map(lambda x: f'"{x}"', data.values())) sql = f'insert ignore into {table_name}({keys}) values({values});' try:     cursor.execute(sql)     db.commit() except:     db.rollback()      # ================================================= # insert update 使用唯一约束情况下,存在则替换,更换为新数据 # =================================================  keys = ','.join(data.keys()) values = ','.join(map(lambda x: f'"{x}"', data.values())) update_sql = ','.join([f'{k} = "{v}"' for k, v in data.items()]) sql = f'insert into {table_name}({keys}) values({values}) on duplicate key update {update_sql};' try:     cursor.execute(sql)     db.commit() except:     db.rollback()          cursor.close() db.close()  

删除

 

修改

 

查询

sql = 'select * from xtable;' cursor.execute(sql) res = cursor.fetchall()      # res = cursor.fetchone() ……  # ======================================================= # 下面是逐条获取 # =======================================================   sql = 'select * from xtabel;' try:     cursor.execute(sql)     print('Count:',cursor.rowcount)     row = cursor.fetchone()     print(row)     while row:         row = cursor.fetchone()         print(row) except:     print('error') 

mongodb

安装

pip install --upgrade pymongo 

连接

client = pymongo.MongoClient(host='localhost', port=27017) 

建库建文档

db = client.test_db collection = db.test_collection 

collection.insert_one({……}) collection.insert_many({……},{……}) 

ɾ

collection.remove({……}) 

# 正常情况:查找,然后修改  # 下面这个,去重插入, collection.update_one({'id': data1['id']}, {'$set': data1}, True) 

collection.find() collection.find_one()  collection.find().count() 

redis

安装

pip install redis hiredis 

连接

连接池不需要管关闭的事情

import redis   pool = redis.ConnectionPool(host='localhost',                             port=6379,                             db=15,                             decode_responses=True)  r = redis.StrictRedis(connection_pool=pool) 

操作

公用方法

方法 作用 例子
exists() 判断是否存在
delete() 删除一个键
type() 判断键类型
keys(pattern) 获取所有符合规则的键 keys(*)
randomkey() 随机获取一个键
rename(src,dst)
dbsize()
expire(name,time)
ttl()
move(name) 把键移动到其他数据库
flushdb() 清空当前数据库
flushall() 清空所有数据库
expire()

字符串

方法 作用 例子
set
get
getset()
mget()
mset()
incr(name,amount=1)
decr(name, amount=1)
append(key,value)

列表

方法 作用 例子
rpush() 末尾添加一个元素
lpush()
lpop()
rpop()
llen(name)
lrange(name,start,end)
lindex(name,index)
lset(name,index,value) lset(‘list’,1,5) 索引为1的元素,赋值为5
lrem(name.count,value) lrem(‘list’,2,3) 删除两个3

集合

方法 作用 例子
sadd(setname,*values)
srem(setname,*values)
spop(setname)
smove(src,dst,value) 把value移动到另外一个集合中去
scard(name) 获取元素个数
sismember(setname,value) 判断
sinter([setname,setname,……]) 返回交集
sunion([setname,setname,……]) 返回并集
sdiff([setname,setname,……]) 返回差集
smembers(setname) 查看全部元素
srandmember(setname) 随即返回一个元素,不删除

有序集合

方法 作用 例子
zadd() zadd(‘grade’,100,‘bob’,98,‘mike’)
zrem() zrem(‘grade’,‘Mike’)
zincrby() zincrby(‘grade’,‘bob’,-2)
zrank(setname,value) 返回名次,从小到大排序 zrank(‘grade’,‘amy’)
zrevrank(setname,value) 返回名词,从大到小排序
zrevrange(setname,start,end) zrevrange(‘grade’,0,3)
zrangebyscore(setname,start,end) zrangebyscore(‘grade’,85,100)
zcount(setname,min,max) min->max之间的个数
zcard(setname) 返回个数
zremrangebyrank(setname,min,max) 删除
zremrangebyscore(setname,min,max) 删除元素

散列

方法 作用 例子
hset() hset(‘price’,‘cake’,5)
hget()
hmset()
hmget()
hincrby()
hexists()
hdel()
hlen()
hkeys()
hvals()
hgetall()
文章来源: https://blog.csdn.net/CoolScript/article/details/90286767
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!