odoo dbfilter,db_name 的配置,指定多个数据

网友投稿 1148 2022-10-11

odoo dbfilter,db_name 的配置,指定多个数据库

odoo dbfilter,db_name 的配置,指定多个数据库

个人偏向配置dbfilter,

​​db_name​​​指定多个数据库,可以使用逗号隔开,如​​db_name=db1,db2​​,但是db1,和db2,必须实际存在数据库中,不然启动报错,这就是我不喜欢使用的原因​​dbfilter​​​使用正则表达式的方式可以指定多个数据库:​​dbfilter=db1|db2​​

补充:

dbfilter 有时候无法获取所有的数据库名:后来查到的原因是使用不同的数据库账号创建的数据库不能交叉使用,即使是​​superuser​​​; 获取所有数据库的代码,注意sql部分中有对​​​datdba​​做筛选

def list_dbs(force=False): if not odoo.tools.config['list_db'] and not force: raise odoo.exceptions.AccessDenied() if not odoo.tools.config['dbfilter'] and odoo.tools.config['db_name']: # In case --db-filter is not provided and --database is passed, Odoo will not # fetch the list of databases available on the postgres server and instead will # use the value of --database as comma seperated list of exposed databases. res = sorted(db.strip() for db in odoo.tools.config['db_name'].split(',')) return res chosen_template = odoo.tools.config['db_template'] templates_list = tuple(set(['postgres', chosen_template])) db = odoo.sql_db.db_connect('postgres') with closing(db.cursor()) as cr: try: cr.execute("select datname from pg_database where datdba=(select usesysid from pg_user where usename=current_user) and not datistemplate and datallowconn and datname not in %s order by datname", (templates_list,)) res = [odoo.tools.ustr(name) for (name,) in cr.fetchall()] except Exception: _logger.exception('Listing databases failed:') res = [] return res

懂得,原来世界如此简单!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:elasticsearch通过guice注入Node组装启动过程
下一篇:基于深度学习的音乐推荐小程序(音乐小程序开发)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~