【Python】tortoiseorm生成的sql不能被sql引擎解析问题

tortoiseorm生成的sql与数据库版本或型号不一致,导致sql无法被解析,可以将QuerySet的sql打印出来,修改sql字符串后再赋值回去。
bulk_create举例:

qs = UserModel.bulk_create(xxx)
# 可以通过以下方式查看原生生成的sql,并发现语法错误。
print(qs.sql())
# 对sql一通处理
sql = qs.sql()
new_sql = sql.replace('xxx', '')
# 赋值回去后 执行
qs._make_query()
qs.__setattr__('insert_query_all', new_sql)
qs.__setattr__('insert_query', new_sql)
await qs._execute()

此方法可能会破坏tortoiseorm的执行逻辑,不过破坏的不多,建议避免在核心业务使用。
__setattr__中的属性字段会因为调用语句的不同而发生改变,需要自行替换。
在替换sql后,不要再执行sql()方法验证结果,因为调用sql()方法会重新生成sql语句。

你可能感兴趣的:(python,sql,数据库)