2

リモート システムでデータベースを作成しようとしています。関連するコードを以下に示します。

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) エントリをデータベースに挿入し、ローカルにキャッシュされたコピーを作成してクエリとエントリを実行する際のレイテンシを改善するメカニズムはありますか?

よろしく、カーシック。

4

3 に答える 3

3

sqlite は、MySQL や PostgreSQL に接続するのと同じ方法で、ログイン資格情報を使用してネットワーク経由で使用することはできません。渡す正しい接続文字列create_engine

 engine = create_engine('sqlite:////tmp/nwtopology.db')
于 2013-05-08T04:04:42.320 に答える
0

thisによると、次の表記法を使用できます。

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

ネットワーク資格情報を渡す方法はまだわかりませんが、少なくともその方法でリモート ファイルにアクセスできます。それは私のために働いた。

于 2014-06-24T15:38:31.933 に答える