我尝试编写需要访问多个数据库以获取数据的应用程序,
这就是我尝试过的。
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://flask:password@localhost/one'
app.config['SQLALCHEMY_BINDS'] = {'two': 'postgresql://flask:password@localhost/two',
'three':'postgresql://flask:=password@localhost/three'}
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
# This is the table that i want to get data which in database three
class Roles(db.Model):
__tablename__ = 'roles'
__bind_key__ = 'three'
role_code = db.Column(db.String(30), primary_key=True)
role_name = db.Column(db.String(30))
print(Roles.query.all())
当我运行该应用程序但出现此错误时。
Traceback (most recent call last):
File "run.py", line 1, in <module>
from application import app
File "/Users/ykn/Work/Project/GitHub/Service/application/__init__.py", line 14, in <module>
from application import routes
File "/Users/ykn/Work/Project/GitHub/Service/application/routes.py", line 26, in <module>
print(Roles.query.all())
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sqlalchemy/orm/query.py", line 3246, in all
return list(self)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sqlalchemy/orm/query.py", line 3405, in __iter__
return self._execute_and_instances(context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sqlalchemy/orm/query.py", line 3430, in _execute_and_instances
result = conn.execute(querycontext.statement, self._params)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 984, in execute
return meth(self, multiparams, params)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 293, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1097, in _execute_clauseelement
ret = self._execute_context(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1287, in _execute_context
self._handle_dbapi_exception(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1481, in _handle_dbapi_exception
util.raise_(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 178, in raise_
raise exception
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1247, in _execute_context
self.dialect.do_execute(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 590, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.InsufficientPrivilege) permission denied for table roles
[SQL: SELECT roles.role_code AS roles_role_code, roles.role_name AS roles_role_name, FROM roles]
(Background on this error at: http://sqlalche.me/e/f405)
那是什么问题,如何从多个数据库中获取数据?