我有一个简单的Web服务,它使用SQLAlchemy的使用模式使用SQLAlchemy与引擎/连接而不是会话是线程安全的吗?
engine = create_engine(database_uri)
connection = engine.connect()
在服务的每个端点连接到数据库,然后我使用相同的连接,以下列方式:
for result in connection.execute(query):
<do something fancy>
由于Session
不是线程安全的,恐怕connection
也不是。
我可以安全地继续这样做吗?如果没有,解决它的最简单方法是什么?
小问题 - 我不知道该服务是否会运行多线程,但我宁愿确保它不会遇到麻烦。
我没有你的问题的答案,但我想问一个问题作为回报:你真的需要一个ORM吗?我知道这是一个个人选择的问题,但是......如果你的数据甚至是远程清理,你可以使用pyodbc并使用游标,它很可能会更好,并有更清晰的implimentation。 – Kelvin
我不认为任何人都必须使用ORM。在这种情况下,由于数据库不断变化,我(个人)碰巧变得更容易。一些查询非常复杂,对我来说更明显(再次,个人),他们使用sqlalchemy是正确的 - SQL非常冗长。 – Clearer
好吧。 +1有一个很好的理由使用它:) – Kelvin