flask的sqlalchemy连接达梦数据库使用同一个用户访问不同模式,自由切换
·
例如用户名是Jay,默认的模式也是Jay,又创建了一个模式叫Jack
达梦的模式就是mysql的库名,达梦用户与模式是一对多的关系
sqlalchemy连接达梦示例
def get_session(sql_url=None):
'''
此方法用来获取数据库连接池的session
:return: session
'''
if sql_url is None:
sql_url = 'dm+dmPython://{}:{}@{}:{}'.format(DM_USER, DM_PASS, DM_HOST, DM_PORT)
# print('sql_url:{}'.format(sql_url))
engine = create_engine(
sql_url,
pool_size=20,
pool_recycle=7200, # 连接回收时间/秒/-1永不回收,session被回收之后重新生成新连接保证不断
pool_pre_ping=True, # 预检测池中连接是否有效,并替换无效连接
pool_use_lifo=True, # 使用后进先出的方式获取连接,允许多余连接保持空闲
echo_pool=True, # 打印出连接池的异常信息
max_overflow=5 # 最大允许溢出连接池大小的连接数量
)
Session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
session = Session()
session.execute("ALTER SESSION SET CURRENT_SCHEMA = 模式名字")
return session
这是实例化flask的app的代码块
把模式名字改了就行
app = Flask(__name__)
app.config['FLASK_ENV'] = "production"
app.config['JSON_SORT_KEYS'] = False
app.config['JSONIFY_PRETTYPRINT_REGULAR'] = True
app.dm_session = get_session()
然后重启flask实例就行了
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)