flask 项目中 sqlalchemy 与 oracle 多用户访问求解?

2019-06-20 14:59:29 +08:00
 6167

一般对于一个 orm 框架的项目来说,模型代码

class User(db.Model):
    __tablename__ = 'user'
    id = Column(BigInteger, primary_key=True)
    a = Column(String)

最终程序会发给数据库 SQL 代码

SELECT user.id AS user_id, user.a AS user_a 
FROM user

但是在 oracle 中,user 表前面存在一个数据库的用户概念(比如说 user1 ),所以,必须发送如下代码才能获取数据

SELECT user.id AS user_id, user.a AS user_a 
FROM user1.user

但是实际上,按照

https://www.oschina.net/question/237257_37964 提供的方案,模型更改为

class User(db.Model):
    __tablename__ = 'user1.user'
    __table_args__ = {'quote': False}
    id = Column(BigInteger, primary_key=True)
    a = Column(String)

实际上程序给数据库发送的 SQL 代码是

SELECT user1.user.id AS user1.user_id, user1.user.a AS user1.user_a 
FROM user1.user

这样的代码是获取不到数据的

还需要什么东西才能让程序发送正确的代码?

SELECT user.id AS user_id, user.a AS user_a 
FROM user1.user
1769 次点击
所在节点    Python
3 条回复
ycz0926
2019-06-20 15:19:49 +08:00
6167
2019-06-20 15:45:49 +08:00
@ycz0926 我瞧了一下感觉和我想要的差距蛮大
6167
2019-06-24 15:22:43 +08:00
这个问题已解决,写配置文件的时候把 user1 加入到 url 中,即
"url": "oracle+cx_oracle://user1:user1@XXXX:1521/XX"

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/575842

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX