2

基本的に、sqlite3 データベースを使用する pyqt アプリケーションがありますが、Cx_Freeze を使用して実行可能ファイルに変換しました。

データベースとクエリは .py として実行すると完全に実行されますが、cx_freeze を .exe に変換した後、GUI は問題なく動作しますが、データベースはクエリに応答しません。

セットアップ スクリプトのコードは次のとおりです。

from cx_Freeze import setup, Executable

# Dependencies are automatically detected, but it might need
# fine tuning.
buildOptions = dict(packages = [],
    excludes = [],
    includes = ["sip", "PyQt5.QtSql"],
    include_files = ["tpaData.db"])

import sys
base = 'Win32GUI' if sys.platform=='win32' else None

executables = [Executable('testTpa.py', base=base)]

setup(
    name='Tpa APP',
    version = '0.1',
    description = 'A PyQt TPA Program',
    options = dict(build_exe = buildOptions),
    executables = executables
)

データベースとアプリをインスタンス化するために使用するコードは次のとおりです。

def __init__(self, dialog):
        Ui_Form.__init__(self)
        self.setupUi(dialog)
        self.createConnection()

def createConnection(self):
        self.db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
        self.db.setDatabaseName("tpaData.db")
        self.db.open()
        self.query = QtSql.QSqlQuery()
        self.query.exec_("create table doses(dose text, bolus text, discard text, remaining text, time1 text, time2 text, time3 text, comment text)")

アプリの後半で、query.prepare メソッドを使用して入力の文字列を作成し、次に query.bind メソッドを使用して値を query.prepare 文字列にバインドします。最後に、query.exec_() を使用して、準備された文字列を送信します。

開発環境(.pyファイル)では動作しますが、cx_freezeを投稿するだけで失敗します。

助けてくれてありがとう。

4

2 に答える 2

0

ここで私の問題の解決策を見つけました.py2exeまたはpyinstallerを使用して配布可能にしました.明らかに私が使用していたCx_freezeバージョンは私のバージョンのpythonと互換性がありませんでした.

于 2016-07-31T16:16:02.347 に答える