通过sqlite在sql alchemy中创建远程数据库

时间:2013-05-07 21:30:10

标签: python sqlite python-2.7 sqlalchemy

我有一个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非常陌生。感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

回答你的问题:

  1. SQLite不支持远程数据库连接 - 您必须自己实现这一点 - 比如将sqlite数据库文件放在网络文件系统共享上,但这会使您的解决方案不太可靠
  2. 我的建议 - 不要尝试使用用户远程sqlite数据库,而是切换到传统的RDBMS。请参阅下面的详细信息。
  3. 听起来你的应用程序已经过度生长了SQLite。现在是时候切换到使用像MySQL或PosgreSQL这样的传统RDBMS,网络连接支持开箱即用。

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

      

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

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

    所以我会做以下事情:

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

答案 1 :(得分:0)

时间改变了。

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

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

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

还有其他人吗?