Repository files navigation
SQLAlchemy 是一个 Python 的 SQL 工具包以及数据库对象映射框架
包含整套企业级持久化模式,专门为高效和高性能的数据库访问
增加,删除,修改采用 ORM 方式进行
查询,insert from select, insert on duplicate key 等采用 sql expression 或 raw sql 实现
安装 python3.7.5
安装依赖
cd sqlalchemy-in-python
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
执行 z_sql/db.sql 语句,重建数据库与数据表
修改代码 里面的 passwd = "your password",该你的 mysql 密码
修改代码 里面的 password="your password",为你的 redis 密码
运行主进程
cd script
python main.py main
运行用例测试
cd script
python main.py test
默认值
建表结构(初始化实例)有效的要使用参数 server_default,即"desc 表结构"可以查到默认值,而且其值必须是字符串
往表中插入记录默认值有效用参数 default
示例:port = Column(Integer, default=14119, server_default="14419")
on duplicate key update 实现
会话 (session) 和 连接 (connection)
创建一个 session,连接池会分配一个 connection。当 session 在使用后显示地调用 session.close(),也不能把这个连接关闭,而是由连接池管理并复用连接
session 使用连接来操作数据库,一旦任务完成 session 会将数据库 connection 交还给 pool
确保 session 在使用完成后用 session.close、session.commit 或 session.rollback 把连接还回 pool,这是一个必须在意的习惯
问题:Can't reconnect until invalid transaction is rolled back
应用程序里的逻辑代码有问题,在进行数据库的写入操作后,缺少 commit、rollback、close 的操作将连接放回连接池,连接池没法管理,当这个连接被数据库回收后,也就出现了上面的异常
create_engine 时指定的连接池中的连接的回收时间大于数据库配置的未活动连接过期时间
预连接
About
python的orm框架
Topics
Resources
License
Stars
Watchers
Forks
You can’t perform that action at this time.