sqlalchemy OperationalError:(OperationalError)无法打开数据库文件无无

时间:2013-05-08 02:08:29

标签: python sqlite python-2.7 sqlalchemy

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

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)是否有任何机制可以通过创建本地缓存副本来改善将条目插入数据库以及查询和输入的延迟?

此致 KARTHIK。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

请参阅my answer with details explanationsyour other related question

此处还有一些分步指南如何安装和配置远程数据库。 我会说首先尝试MySQL - 恕我直言,PosgreSQL更简单。

youtube

还提供了一些视频指南

答案 2 :(得分:0)

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

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

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