flask使用SQLAlchemy连接多个数据库进行orm操作

flask使用SQLAlchemy连接多个数据库进行orm操作

2023年7月20日发(作者:)

flask使⽤SQLAlchemy连接多个数据库进⾏orm操作如图为两个数据库的models:models为项⽬默认的数据库:通过settings中SQLALCHEMY_DATABASE_URI参数配置。wink_model为连接的第⼆个只读数据库:通过settings中SQLALCHEMY_BINDS参数配置。详见:SQLALCHEMY_BINDS = { 'winkdb': "{}+{}://{}:{}@{}:{}/{}?charset=utf8mb4".format("mysql","pymysql","root",123456,"127.0.0.1",3306,"db_name"), }在model模型中要指定 __bind_key__ = 'winkdb'指向该数据库,如果没有则会⾃动使⽤默认的数据库。如果两个数据库共同使⽤⼀个SQLAlchemy()对象,也可正常查询只是不能使⽤("sql语句")直接执⾏sql语句,查询时没有使⽤model模型⽽是直接使⽤数据库连接引擎直接执⾏sql语句所以会使⽤默认数据库进⾏查询。所以最好再创建⼀个SQLAlchemy()对象并指定那个数据库引擎——>wink_db = SQLAlchemy(session_options={"bind": create_engine(("HouseDevelopConfig").SQLALCHEMY_("winkdb"), pool_recycle=7200, pool_size=50)})这样不管怎样查询就都可以了。from flask_sqlalchemy import SQLAlchemyfrom sqlalchemy import create_enginefrom WinkChat import settingswink_db = SQLAlchemy(session_options={"bind": create_engine( ("HouseDevelopConfig").SQLALCHEMY_("winkdb"), pool_recycle=7200, pool_size=50)})class Tod(wink_): __bind_key__ = 'winkdb' id = wink_(wink_r, primary_key=True) name = wink_(wink_(64)) #

photo_id = wink_(wink_eger, default=0) # lang = wink_(wink_) #

vip = wink_(wink_nteger, default=0) #

price = wink_(wink_r, default=0) #

status = wink_(wink_nteger, default=0) #

__mapper_args__ = { "order_by": () }⼏种简单查询:from __model import Todfrom __model import wink_db 1. tods = wink_(Tod).all()

2. tods = () 3. tods = (=1) 4. tods = wink_e("select * from tod")

5. tods = wink_e("select * from tod where id={}".format(1)) # 字符串拼接sql可以但最好使⽤下边的参数绑定⽅式,防⽌sql注⼊。from sqlalchemy import texttod_sql = text("select * from tod where id=:tod_id")# 参数传字典可直接执⾏ 1. tods = wink_e(tod_sql, {'tod_id': 1})

# 传key=参数需要先创建⼀个connection()对象 2. conn =wink_tion() tods = e(tod_sql, tod_id=1)for td in tods: print()

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689824512a288906.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信