2017-01-11 6 views
-2

データベースcliを使用してデータベースを検索するスクリプトを作成しています。私はos.system(データベースにアクセスするためのコマンド)を使ってPythonでデータベースにアクセスできました。しかし、.system関数はcliにコマンドを入力しません。pythonを使用してcliを使用する

+1

(未知の)これらの(未知の)データベースに対してPythonライブラリを使用するのはなぜですか? –

+0

pymysqlを使ってみませんか? – McGrady

+1

あなたの投稿を編集して、動作していないコードの[mcve]を含めてください。有用な回答を提供できるように、使用中のデータベースに言及してください。 –

答えて

0

使用しているデータベースがキーボードからの入力を期待している可能性があります(入力待ちのようです)。その場合、systemを使用することはできません。データベースのCLIプロセスを開始し、そのプロセスとの通信を管理する必要があります。

ここに簡単な例があります。標準入力からデータを取り込んでそれを書き戻す単純なアプリケーションから始めましょう。これは、データベースのCLIプログラムのようになります。

# cli.py 
s = input()  # Avoid input() on Python 2! 
print("Hello, %s!" % s) 

そして、ここでドライバは(あなたが書いているコード)

# driver.py 
import subprocess 
from subprocess import PIPE 

proc = subprocess.Popen(['python3', './cli.py'], stdin=PIPE, stdout=PIPE) 
try: 
    outs, errs = proc.communicate(b'world', timeout=2) 
    print(outs.decode('utf-8')) 
except: 
    print('An error occurred.') 

期待出力されます:

Hello, world! 

ですから、コマンドを駆動するために、このすべてを編成する必要がありますデータベースのCLIに挿入し、結果を読み出します。これは恐ろしい時間のように思えます - cricket_007が述べたように、データベースにはおそらくCLIを経由せずにアクセスする方法があります。

このルートを継続する必要がある場合は、pexpectモジュールを参照してください。これは、この複雑さの多くを処理する必要があります。

関連する問題