Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过sqlite在sql alchemy中创建远程数据库_Python_Sqlite_Python 2.7_Sqlalchemy - Fatal编程技术网

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

Python 通过sqlite在sql alchemy中创建远程数据库,python,sqlite,python-2.7,sqlalchemy,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

我有一个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
我想在远程计算机中创建数据库本身。我偶然发现了这个文档。

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

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
引擎=创建引擎('postgresql://scott:tiger@本地主机:5432/mydatabase')

我的第一个问题是

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


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

回答您的问题:

  • SQLite不支持远程数据库连接—您必须自己实现—就像将SQLite数据库文件放在网络文件系统共享上一样,但这会降低解决方案的可靠性
  • 我的建议-不要尝试使用用户远程sqlite数据库,而是切换到传统的RDBMS。请参阅下文了解更多详细信息
  • 听起来您的应用程序已经过度扩展了SQLite。现在正是切换到使用传统RDBMS(如MySQL或PosgreSQL)的好时机,在这些RDBMS中,网络连接支持开箱即用

    SQLite是本地数据库。SQLite知道何时使用它。它说:

    如果您有多个客户端程序通过网络访问一个公共数据库 网络< /强>,您应该考虑使用Client/Server数据库引擎 而不是SQLite

    好的方面是,当您使用SQLAlchemy生成查询时,您的应用程序可能与数据库无关

    因此,我将做以下工作:

    • 将数据库系统安装到计算机上(不管是本地还是本地) 远程,您始终可以重复操作(将数据库移动到远程计算机)并为用户配置权限(创建数据库、更改、选择、更新和插入)
    • 创建数据库架构并填充数据-克隆现有数据库。有一些工具可用于这样做,即。 sqlite数据库
    • 将应用程序中的db连接字符串从使用sqlite更新为使用您选择的远程数据库
    • 时代变了

      如果希望通过web提供SQLite数据库,一种选择是使用CubeSQL作为服务器,SQLite的SQLItemManager作为客户端。有关详细信息,请参见例如

      另一种选择可能是类似地使用Valentina服务器:请参阅

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

      还有其他的吗