in crashclouseau/models.py [0:0]
def get_id(name):
sel = db.select([db.literal(name)]).where(
~db.exists([File.name]).where(File.name == name)
)
ins = (
db.insert(File)
.from_select([File.name], sel)
.returning(File.id)
.cte("inserted")
)
rs = (
db.session.query(File.id)
.filter(File.name == name)
.union_all(
db.session.query(File.id).select_from(ins).filter(File.id == ins.c.id)
)
)
first = rs.first()
if first is None:
first = rs.first()
id = first[0]
db.session.commit()
return id