如何部署Python/SQLAlchemy应用?
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实例内进行的,所以当你的用户从远程连接到数据库时,如果你想使用连接池,你还是得写一个小服务器。你也可以直接连接到数据库服务器,这样每个用户至少会有一个连接。具体要看你想实现什么目标。