在我的 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/