如何部署Python/SQLAlchemy应用?

2 投票
1 回答
1004 浏览
提问于 2025-04-16 03:02

SQLAlchemy让我创建了一个强大的数据库工具,但我现在不知道怎么部署它。让我用一个例子来解释它是怎么构建的:

# objects.py
class Item(object):
 def __init__(self, name):
  self.name = name

# schema.py
from sqlalchemy import *
from objects import Item
engine=create_engine('sqlite:///mydb.db')
metadata = MetaData(engine)
item_table = Table(
 'items', metadata,
 Column('id', Integer, primary_key=True),
 Column('name', String(100))
)

item_mapper = mapper(Item, item_table)
metadata.create_all()

# application.py
from schema import engine, Item
from sqlalchemy import *

Session = sessionmaker(bind=engine)

class Browser(object):
 def __init__(self):
  self.s = Session()
 def get_by_name(self, name):
  return self.s.query(Item).filter_by(name=name)

如你所见,我想让用户使用的是最后一个接口(Browser),在这里我简化了查询,让最终用户更容易使用。

如果你让每个用户都打开一个Python环境,然后输入from application import Browser,那么连接池的好处就没法体现出来了,因为每个用户都会创建一个不同的Session类(而不是创建一个不同的session实例)。

那么,我是不是应该写一个服务器,让用户连接到这个服务器呢?或者,你会怎么部署这个假设的应用呢?

谢谢。

1 个回答

0

连接池是在同一个Python实例内进行的,所以当你的用户从远程连接到数据库时,如果你想使用连接池,你还是得写一个小服务器。你也可以直接连接到数据库服务器,这样每个用户至少会有一个连接。具体要看你想实现什么目标。

撰写回答