【问题标题】:sqlalchemy OperationalError: (OperationalError) unable to open database file None Nonesqlalchemy OperationalError: (OperationalError) 无法打开数据库文件 无 无
【发布时间】:2013-05-02 03:27:32
【问题描述】:

我正在尝试在远程系统中创建数据库。相关代码如下

log = core.getLogger()

engine = create_engine('sqlite:////name:pass@192.168.129.139/tmp/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

显然我正在尝试在远程系统中创建数据库。我收到错误消息:

OperationalError: (OperationalError) unable to open database file None None

我的问题如下。

1) 在本地计算机上运行程序的用户与在远程计算机上尝试创建数据库的用户不同。这是一个问题吗?

2) 是否有任何机制可以通过创建本地缓存副本来改善将条目插入数据库和查询和条目的延迟?

问候, 卡提克。

【问题讨论】:

    标签: python sqlite python-2.7 sqlalchemy


    【解决方案1】:

    sqlite 不能通过网络使用登录凭据,就像连接 MySQL 或 PostgreSQL 一样;传递给create_engine 的正确连接字符串只是

     engine = create_engine('sqlite:////tmp/nwtopology.db')
    

    【讨论】:

    • 我应该怎么做才能使用登录凭据通过网络创建数据库?
    【解决方案2】:

    请参阅my answer with details explanationsyour other related question

    这里还有一些如何安装和配置远程数据库的分步指南。 我想说先试试 MySQL - 恕我直言,PosgreSQL 更简单。

    youtube也有一些视频指南

    【讨论】:

      【解决方案3】:

      根据this,您可以使用这种表示法:

      engine = create_engine('sqlite:///\\\\192.168.129.139\\tmp\\nwtopology.db',echo=False)
      

      仍然不知道如何传递网络凭据,但至少您可以通过这种方式访问​​远程文件。它对我有用。

      【讨论】:

      • 非常不鼓励在网络共享上使用 SQLite,请参阅“当另一个 RDBMS 可能工作得更好时”:sqlite.org/whentouse.html
      猜你喜欢
      • 2011-11-10
      • 2016-06-17
      • 2012-06-08
      • 2011-12-01
      • 2011-06-05
      • 2021-10-19
      • 1970-01-01
      相关资源
      最近更新 更多