2017-05-18 28 views
0

msiファイルを読み込んでクエリを作成する必要があります。しかし、Pythonの標準ライブラリであるにもかかわらず、documentationが貧弱です。 クエリを作成するには、データベースのスキーマを知っていなければなりません。ファイルから取得するためのサンプルやメソッドが見つかりません。python msilibでmsiを読む

は、ここで私は仕事にするためにしようとしている私のコードです:

import msilib 

path = "C:\\Users\\Paul\\Desktop\\my.msi" #I cannot share msi 
dbobject = msilib.OpenDatabase(path, msilib.MSIDBOPEN_READONLY) 
view = dbobject.OpenView("SELECT FileName FROM File") 
rec = view.Execute(None) 
r = v.Fetch() 

そしてrec変数はNoneです。しかし、私はInstEdツールでMSIファイルを開き、Fileがテーブルリストに存在し、そこに多くのレコードがあることを確認できます。 私は間違っていますか?

答えて

0

最後の行でサンプルにNameErrorがスローされるため、コードは疑わしいものです。ですから、その行を無視しましょう。

実際の問題は、view.Executeが何も返さないということです。フードの下では、MsiViewExecute関数は成功または失敗のみを返します。電話をした後、view.Fetchに電話する必要があります。これは最終行が意図したものかもしれません。