简单介绍:
说明: 此模块主要用于将关系型数据库表映射到PY的类,行映射到PY类的实例,列映射为PY实例的属性,由于其兼容众多DB-API及扩展,SO可以优先考虑数据模型,而忽略底层的DB-API切换,数据迁移更方便.
快速安装:pip install --upgrade SQLAlchemy
创建引擎:
1. 连接数据库前需创建引擎,作为执行SQL的接口,其实底层通过Pool(连接池)和Dialect(翻译器)将映射后的PY语句转换为对应DB-API支持的原生SQL语句去执行,这样写PY时就不用关注后端的数据库
2. 只有在连接被依赖而被动调用时才会建立Pool,否则创建引擎默认只会创建Dialect翻译器,简单的说Engine与后端Database创建的连接总是惰性被动创建的
# 连接字符串#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
#
# Authors: limanman
# OsChina: http://xmdevops.blog.51cto.com/
# Purpose:
#
"""
# 说明: 导入公共模块
from sqlalchemy import create_engine
# 说明: 导入其它模块
if __name__ == '__main__':
"""
sqlite:///data.db : 相对当前目录查找
sqlite:var/run/data.db : 绝对/var/run下查找
sqlite:///C:\\Users\\Administrator\data.db : 绝对C:\\Users\\Administrator下查找
"""
engine = create_engine('sqlite:///data.db', echo=True)
# 注意: 为了避免乱码charset=utf8强制设置
engine = create_engine('mysql://username:password@hostname:hostport/'
'database?charset=utf8', echo=True, pool_recycle=3600)
说明: 如上以两个常用的数据库为例,创建引擎时参数echo=True则表示打印处理过程,默认MySQL连接闲置超过8小时会会自动关闭,pool_recycle=3600缩短时间到1小时,连接池会自动清理闲置连接
追本溯源:
说明: 转到sqlalchemy包__init__.py文件,可以看到默认导入了虽有核心支持的.sql/.types/.schema,所以我们完全可以在代码中直接通过from sqlalchemy import ...,...,...导入,而且转到对应的定义处有非常详细的使用场景以及使用案例演示..sqlalias,all_,and_,any_,asc,between,bindparam,case,cast,collate,column,delete,desc,distinct,ex