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 shell 和 from application import Browser 似乎连接池的优势没有实现,因为每个用户创建不同的 Session 类(与创建不同的 session 实例相反)。
那么,我应该编写一个用户连接的服务器吗?或者,您将如何部署这个假设的应用程序?
谢谢。
请您参考如下方法:
连接池发生在同一个 python 实例中,因此当您的用户从远程连接到数据库时,如果您想使用它,您无论如何都必须编写一个小型服务器。您还可以直接连接到数据库服务器,从而(至少)为每个用户建立一个连接。取决于您想要实现的目标。
