【问题标题】:remote database creation in sql alchemy via sqlite通过 sqlite 在 sql alchemy 中创建远程数据库
【发布时间】:2013-05-01 23:42:32
【问题描述】:

我有一个当前使用本地数据库的 sqlalchemy 应用程序。该应用程序的代码如下。

log = core.getLogger()

engine = create_engine('sqlite:///nwtopology.db', echo=False)
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()

class SourcetoPort(Base):
    """"""
    __tablename__ = 'source_to_port'
    id = Column(Integer, primary_key=True)
    port_no        = Column(Integer)
    src_address    = Column(String,index=True)

    #-----------------------------------------
    def __init__(self, src_address,port_no):
        """"""
        self.src_address = src_address
        self.port_no     = port_no

我想在远程机器上创建数据库本身。我遇到了这个文档。 http://www.sqlalchemy.org/doc_pdfs/sqlalchemy_0_6_3.pdf

在解释中,他们提到了下面给出的行。

engine = create_engine('postgresql://scott:tiger@localhost:5432/mydatabase')

我的第一个问题是

1) sqlite 是否支持远程数据库创建? 2)如何保持与远程机器的连接始终打开?我不想每次必须插入条目或进行查询时都启动 ssh 连接。

这些问题可能听起来很愚蠢,但我对 python 和 sqlalchemy 很陌生。感谢任何帮助。

【问题讨论】:

    标签: python sqlite python-2.7 sqlalchemy


    【解决方案1】:

    回答您的问题:

    1. SQLite 不支持远程数据库连接 - 您必须自己实现 - 例如将 sqlite 数据库文件放在由网络文件系统共享的位置,但这会使您的解决方案不太可靠
    2. 我的建议 - 不要尝试使用用户远程 sqlite 数据库,而是切换到传统的 RDBMS。有关详细信息,请参阅下文。

    听起来您的应用程序已经长满了 SQLite。现在是切换到使用开箱即用的网络连接支持的传统 RDBMS(如 MySQL 或 PosgreSQL)的好时机。

    SQLite 是本地数据库。 SQLite 有a page explaining 何时使用它。它说:

    如果您有许多客户端程序访问一个公共数据库 网络,您应该考虑使用客户端/服务器数据库引擎 而不是 SQLite。

    好处是您的应用程序可能与数据库无关,因为您使用 SQLAlchemy 生成查询。

    所以我会做以下事情:

    • 将数据库系统安装到机器上(没关系 - 本地或 远程,您可以随时重复将数据库移动到远程计算机)并为您的用户配置权限(创建数据库、更改、选择、更新和插入)
    • 创建数据库架构并填充数据 - 以克隆您现有的。有一些工具可用于这样做 - 即Copying Databases across Platforms with SQLAlchemy sqlite 数据库。
    • 将应用程序中的 db 连接字符串从使用 sqlite 更新为使用您选择的远程数据库

    【讨论】:

      【解决方案2】:

      时代变了。

      如果希望通过 Web 提供 SQLite 数据库,一种选择是使用 CubeSQL 作为服务器,使用 SQLiteManager for SQLite 作为其客户端。有关详细信息,请参见例如https://www.sqlabs.com/

      另一种选择可能是类似地使用 Valentina Server:请参阅 https://www.valentina-db.com/en/valentina-server-overview

      (这些选项可能仅适用于一次最多有一个客户端具有写访问权限的情况。)

      还有其他的吗?

      【讨论】:

        猜你喜欢
        • 2018-11-24
        • 2015-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-19
        • 1970-01-01
        • 1970-01-01
        • 2021-05-30
        相关资源
        最近更新 更多