pymysqlを使用してinceptionを接続する解決策
2933 ワード
最近py 3.5とdjangoを組み合わせてinceptionに基づいてSQL監査プラットフォームを開発しました.開発中にinceptionはmysqldbライブラリをサポートしているがpymysqlライブラリをサポートしていないことが判明し、mysqldbライブラリはpy 3.5と互換性がない.pymysql接続inceptionを直接使用して次のエラーを報告します.
pymysqlソースコードを検索connections.pyファイルを変更する
1107行が見つかりました
次のように変更
pymysqlソースコードを検索cursors.pyファイルを変更する
346行が見つかりました
次のように変更
実測はinceptionを正常に接続し、関連結果を返すことができます.
ValueError: invalid literal for int() with base 10: 'Inception2'
pymysqlソースコードを検索connections.pyファイルを変更する
1107行が見つかりました
def _request_authentication(self):
# https://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::HandshakeResponse
if int(self.server_version.split('.', 1)[0]) >= 5:
self.client_flag |= CLIENT.MULTI_RESULTS
次のように変更
def _request_authentication(self):
# https://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::HandshakeResponse
try:
if int(self.server_version.split('.', 1)[0]) >= 5:
self.client_flag |= CLIENT.MULTI_RESULTS
except:
if self.server_version.split('.', 1)[0] == 'Inception2':
self.client_flag |= CLIENT.MULTI_RESULTS
pymysqlソースコードを検索cursors.pyファイルを変更する
346行が見つかりました
if self._result and (self._result.has_next or not self._result.warning_count):
return
次のように変更
if self._result:
return
実測はinceptionを正常に接続し、関連結果を返すことができます.