python sqlalchemy mysql 自动映射

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之SQLAlchemyhttps://www.cnblogs.com/ccorz/p/5711955.html

python操作数据库常用工具: https://foofish.net/python-mysql.html

 

转载于:https://www.cnblogs.com/yelao/p/11003161.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值