Python3学习笔记---数据存储

一、CSV

import csv

dic={'year':'1991年','num':'10人评论','pcore':'10分'}
f = open("data.csv",mode='a',encoding="utf8")
csv_w = csv.writer(f)
csv_w.writerow(dic.values())
f.close()

 

二、图片存储

#请求图片URL下载图片
img_resp = requests.get(img_url)
f = open('img/'+img_name,mode='wb')
f.write(img_resp.content)    #通过img_resp.content 可以拿到图片的字节
f.close()

 

三、处理XML数据

import xml.sax
import xml.sax.handler
 
# python 处理xml 数据 类,将xml数据转化为字典
'''
原数据:<?xml version='1.0' encoding='UTF-8'?><recordset><user><empNo>9321</empNo><name>张氏</name><mis>张氏</mis><system>百度</system><fullDeptName>/百度/销售支持部/业务培训组</fullDeptName><position>业务培训经理</position><positionType>管理类</positionType><ygState>正式</ygState><ygType>管理员工</ygType><zwz>管理族</zwz><rzDate>2008-04-02</rzDate><zzDate>2008-06-01</zzDate><zone>北京</zone><dxqs>15</dxqs><iflz>否</iflz><lzDate>null</lzDate><ssoid>9764043</ssoid><im>zhangshi</im><email>zhangshi@baidu.com</email></user></recordset> 7 处理后:{'empNo': '9321', 'name': '张氏', 'mis': '张氏', 'system': '百度', 'fullDeptName': '/百度/销售支持部/业务培训组', 'position': '业务培训经理', 'positionType': '管理类', 'ygState': '正式', 'ygType': '管理员工', 'zwz': '管理族', 'rzDate': '2008-04-02', 'zzDate': '2008-06-01', 'zone': '北京', 'dxqs': '15', 'iflz': '否', 'lzDate': 'null', 'ssoid': '9764043', 'im': 'zhangshi', 'email': 'zhangshi@baidu.com', 'user': 'zhangshi@baidu.com', 'recordset': 'zhangshi@baidu.com'} 8 '''
class XMLHandler(xml.sax.handler.ContentHandler):
    def __init__(self):
        self.buffer = ""
        self.mapping = {}

    def startElement(self, name, attributes):
        self.buffer = ""

    def characters(self, data):
        self.buffer += data

    def endElement(self, name):
        self.mapping[name] = self.buffer

    def getDict(self):
        return self.mapping
        

#调用函数,处理xml数据
xh = XMLHandler()
xml.sax.parseString(r11.encode(), xh)    #r11  为XML 数据。
result_dict = xh.getDict()

 

 

四、Oracle 数据库

import cx_Oracle       #pip install cx_Oracle

#连接数据库
oracle_db_cur = cx_Oracle.connect('用户名/密码@IP:端口/实例名').cursor()

#查询数据:提取出前50行
my_data =  oracle_db_cur.execute('''select * from (select 字段1, 字段2, 字段3,...,字段n  from 表名 order by update_date) where rownum < 50''')

#遍历数据
my_data = my_data.fetchall()
for i in my_data:
    print(i)

 

注:如果windows 连接报错:cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "The specified modue ......

  解决方案:

    1、下载instant-client :https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html

    2、解压软件,将文件中的所有 .dll 的文件拷贝至 Python 安装目录的 Lib/site-packages。

 

五、Redis

import redis
#连接
r = redis.Redis(host='redis_IP',port=端口,db=0,password='密码')

#插入str
r.set('name','3333')    #插入成功,返回True
r.get('name')     #查看结果

#插入Set
r.sadd('my_set','135543')   #插入成功,返回1
r.smembers('my_set')     #查看结果

#使用连接池管理连接
# 使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。
# 默认,每个Redis实例都会维护一个自己的连接池。
# 可以直接建立一个连接池,然后作为Redis的构造参数,这样就可以实现多个Redis实例共享一个连接池。
pool = redis.ConnectionPool(host='127.0.0.1', port=6379,db=1,password="your_passwd")
r = redis.Redis(connection_pool=pool)
r.set('name', 'redis') #添加
print(r.get('name')) #获取


#######连接redis 集群###########
from rediscluster import RedisCluster     #依赖包安装 :pip install redis-py-cluster

def redis_cluster():
    redis_nodes = [
        {'host':'server1','port':端口},
        {'host':'server2','port':端口},
        {'host':'server3','port':端口},
    ]
    try:
        rc = RedisCluster(startup_nodes=redis_nodes,password='密码')
        return rc
    except Exception as e:
        print(e)
        print("error,connection Rediscluster fail!!!!")
        return False

 

posted @ 2022-01-05 17:14  语~默  阅读(81)  评论(0编辑  收藏  举报