SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作
简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果
SQLAlchemy本身无法操作数据库,其必须依赖pymsql等第三方插件,Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作.
以下列举了几种常用插件的数据库url格式:
MySQL-Python mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname> pymysql mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>] MySQL-Connector mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname> cx_Oracle oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]
本文使用 pymysql 插件:
安装:
# 安装pymysql插件 pip install pymysql # 安装sqlalchemy pip install sqlalchemy
安装成功后即可使用:
本实例用法为表已经存在, ORM 自动映射类:
from datetime import datetime from sqlalchemy.ext.automap import automap_base from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine # 数据库连接url DB_CONNECT_STRING = 'mysql+pymysql://username:password@address:port/database' # 创建引擎 engine = create_engine(DB_CONNECT_STRING, echo=True) # 自动映射 Base = automap_base() Base.prepare(engine,reflect=True) # 获取所有表的映射类 tables = Base.classes.keys() # 获取指定类user表 --> user实体类 user = Base.classes.user # 查看user #print(user.__dict__) # 获取所有字段或属性 keys = test_case.__table__.columns.keys() # 创建session Session = sessionmaker(bind=engine) session = Session() # 查表,返回实例列表 result = session.query(test_case).all() # 按条件查表, 返回实例集合 ret = session.query(test_case).filter_by(name='zhangsan').all() # 创建新的实例,并插入,nowtime字段为TIMESTAMP newUser = user(name='lisi', age=10, nowtime=datetime.now()) session.add(newUser) # 提交 session.commit()
参考:
Python操作MySQL之SQLAlchemy:https://www.cnblogs.com/ccorz/p/5711955.html
python操作数据库常用工具: https://foofish.net/python-mysql.html