Python持久化

有关持久化的模块

marshalpicklecPickle可以用来转换并存储python对象。该过程将对象转化为二进制数据集合。
dbhash/bsddb, dbm, gdbm, dumbdbm 以及它们的”管理器”( anydbm )只提供了字符串的永久性储存。
shelve则既可以存储对象,也可以存储字符串。

marshal和pickle模块的区别

marshalpickle模块的区别在于marshal只能处理简单Python 对象(数字, 序列, 映射, 以及代码对象), 而pickle 还可以处理递归对象, 被不同地方多次引用的对象, 以及用户定义的类和实例。

shelve模块

shelve

### Python 持久化层设计方法和最佳实践 #### 1. 使用 ORM 进行持久化层开发 SQLAlchemy 是一种强大的 ORM (对象关系映射) 工具,它可以让开发者更高效地使用数据库[^1]。通过 SQLAlchemy,可以省去很多手动管理数据库连接、资源、事务等重复工作。 ```python from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) engine = create_engine('sqlite:///example.db') Session = sessionmaker(bind=engine) session = Session() ``` #### 2. 数据库连接池的应用 为了提高应用程序的性能并减少频繁建立新连接带来的开销,在 Flask 应用程序中通常会结合 PooledDB 或者 SQLAlchemy 自带的连接池机制来优化数据库操作[^3]。 对于多线程环境下的应用来说,采用每一线程独享一个数据库链接的方式是一种常见做法[^4]: ```python from DBUtils.PooledDB import PooledDB import pymysql pool = PooledDB( creator=pymysql, maxconnections=6, mincached=2, maxcached=5, blocking=True, host='localhost', user='root', password='', database='testdb', charset='utf8mb4' ) conn = pool.connection() cursor = conn.cursor() ``` #### 3. 配置文件中的设置 合理的配置也是实现良好持久化层的一部分。例如下面这段代码展示了如何定义一个基本的配置类用于存储有关数据库的信息: ```python class Config(object): SQLALCHEMY_DATABASE_URI = "mysql+pymysql://username:password@host/dbname" SQLALCHEMY_TRACK_MODIFICATIONS = False ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值