私はpython &のmysqlデータベースと対話するためにpythonを利用してアプリケーションを継承しました。私が発行する場合: create_engineの問題mysql 5.7とsqlalchemy
mysql_engine = sqlalchemy.create_engine('mysql://uname:[email protected]:3306/testdb', connect_args={'use_unicode':True,'charset':'utf8', 'init_command':'SET NAMES UTF8'}, poolclass=NullPool)
cmd = unicode("USE testdb")
with mysql_engine.begin() as conn:
conn.execute(cmd)
sqlalchemy.exc.OperationalError: (OperationalError) (2003, "Can't connect to MySQL server on '192.168.xx.xx' (101)") None None
を、IDLEを使用して私が行うことができます。
>>> import MySQLdb
>>> Con = MySQLdb.Connect(host="192.168.xx.xx", port=3306, user="uname", passwd="pwd", db="testdb")
>>> Cursor = Con.cursor()
>>> sql = "USE testdb"
>>> Cursor.execute(sql)
アプリケーションをこの時点ではデフォルトでオンボードのsqliteデータベースを使用する方法。この後、上記のcreate_engineステートメントを使用して、MySQLデータベースに喜んで切り替えることができます。しかし、再起動すると、MySQLデータベースの接続は再び失敗し、オンボードのsqlite dbなどにデフォルト設定されます。
これがどのように起こっているのか、誰にも何か提案がありますか?
ちょうど私がこれを更新すると思った - 問題は上記のとおり正確に発生します。私は、ユーザがメニューオプションを選択して手動でMySQLデータベースに接続できるように、アプリケーションを更新しました。これは、アプリケーションが起動しているときは例外を除いて同じコードを呼び出しますが、アプリが起動されていれば正常に動作します。
MySQLインスタンスは、アプリケーションとは完全に別々で実行されるため、常に接続を受信できるようにする必要があります。
私は基本的な質問は、私はどのようにアプリケーションが起動して実行されているときに同じ接続コードが動作することができますが、開始時に例外をスローすると思いますか?
接続パラメータまたはリモートデータベースに依存しない使用可能な接続の作成に失敗する可能性のあるSQLAlchemyの成果物はありませんか?
を決して実行を設定していないかどうPythonは死ぬ?例外?セグフェルト?出力はありませんか? – univerio
@univerio - 申し訳ありませんが、私はそこに十分な情報を提供していませんでした。例外が発生しました。 – RadioRaheem