python - SQLAlchemy 将表名更改为有两个下划线

标签 python flask sqlite sqlalchemy flask-sqlalchemy

在我的 Flask/SQLAlchemy 项目中,我有一个名为 Styles_Index 的索引表,它有一个我查询的相应表对象。 sqlite3 中的架构如下所示

CREATE TABLE Styles_Index
(
    beer_id integer not null, 
    style_id integer not null, 
    primary key (beer_id, style_id)
);

Python 中的对象看起来像

class Styles_Index(db.Model):
    beer_id = db.Column(db.Integer, db.ForeignKey('beers.id'),
            primary_key = True)
    style_id = db.Column(db.Integer, db.ForeignKey('styles.id'),
            primary_key = True)

当我尝试通过 SQLAlchemy BaseQuery.join() 将表连接到另一个共享公共(public)键的表时,它会创建一个查询:

SELECT styles__index.id AS styles__index_id, 
    styles__index.beer_id AS styles__index_beer_id, 
    styles__index.style_id AS styles__index_style_id
    FROM styles__index JOIN styles ON styles__index.style_id = styles.id
    LIMIT ? OFFSET ?

其中 Styles_Index 有两个下划线而不是一个。 这是由于 SQL 中的 _ 通配符而有意设计的选择吗?有没有更好的方法来编写此查询,而无需编写原始 SQL?

最佳答案

郑重声明,使用 PEP 8 特定名称(例如 MyClassName)不会出现此类问题。

关于python - SQLAlchemy 将表名更改为有两个下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47524720/

相关文章:

python - 列出标准的 Python 库模块和适当的子模块?

mysql - SQLAlchemy like/regex 查询零个或多个字符

sqlite - 在单元测试期间避免在 EF Core 2.2 中使用 HasData Seed DbContext

sqlite - 在sqlite数据库(如firebird)的触发器中使用post_event

python复制嵌套列表

python - “PlayerStatsForm”对象没有属性 'username'

python - Python 中具有不同签名的菱形继承(钻石问题)

flask - 将应用程序部署到 Heroku 后清除客户端浏览器缓存

python - 来自flask_login的login_required装饰器不重定向到上一页

java - 使用 SQL 数据库填充 ListView 错误