2017-04-27 6 views
2

私はPythonで小さなデータベースを作成したいのですが、それを行うのがベストプラクティスでしょうか?例えば小さなデータベースをPythonで作成するベストプラクティスは何ですか?

、私は、データベース内の "SHのIPルート" Ciscoのコマンドの出力を保存したい場合は、

O  1.1.1.1 [110/2] via 10.0.0.1, 00:00:23, FastEthernet0/0 

店舗、これらの値:

1.1.1.1 - >ネクストホップ、発信インターフェイス、ソース(のようなO、C、S)PostgreSQLの使用

  1. は、MySQL
  2. { '1.1.1.1' このようなネストされた辞書もの:{ネクストホップ:{発信インタフェースソース}}
  3. { '1.1.1.1' の値としてリストと辞書:[次ホップ、出力インターフェース、ソース]}
  4. その他のオプションは?

私はSQLが最高の解決策になると思っていますが、SQLではない場合、別の選択肢は何ですか?

+1

pythonでsqlite3モジュールを使用してくださいhttps://docs.python.org/2/library/sqlite3.html – sisanared

+0

確かに!いいですね。 2と3の間で、どの練習が良いですか? – monica

+0

Python辞書をsqlite3に直接格納することはできないため、Python辞書をJSON文字列に変換する必要があります。 – sisanared

答えて

2

ルーティングテーブルの形式は、PostgresやMySQLのようなRDBMSのリレーショナルテーブルと似ています。

この場合、ドキュメント指向のデータベースを使用することをお勧めします。どのデータベースを使用するかについては、展開シナリオとアプリケーションアーキテクチャによって異なります。

あなたの目的がネットワーク経由でアクセスできるデータベースサーバなら、Mongoは非常に良い選択です。データをローカルにのみアクセスする単一ノードのアプリケーションを使用する場合は、TinyDBを見ることができます。

TinyDBであなたのコードは次のようになります。

from tinydb import TinyDB, Query 

db = TinyDB('/path/to/db.json') 
db.insert({ 'Destination': '1.1.1.1', 
      'NextHop': '10.0.0.1', 
      'A': '*', 
      'P': 'B', 
      'Prf': 170', 
      .... 
      }) 

そして最後として、個々のルートを探します。

route = Query() 
    db.search(route.Destination == '1.1.1.1') 
    # [{'Destination': '1.1.1.1','NextHop': '10.0.0.1','A': '*',...}] 

または一度にそれらのすべてを取得:

db.all() 

それが役に立てば幸い!

関連する問題