いくつかのジャンゴ2.2とピットの使用mysqlの

DjangoはおそらくMySQLdbはライブラリの使用に起因しているのpython3をサポートしていない、我々はピットの多様で、その結果、代わりにPyMySQLライブラリーを採用し、特に次の2つのコマンドの実装は時間です。

python manage.py makemigrations
or
python manage.py inspectdb

最初のピット(バージョンを促しあるmysqlclient低すぎます)

あなたがインストールはmysqlclientをインストールPIP最新バージョンを実行して退屈している、スローされます。

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None

MDは、LZこのエラーはあまりにも誰かを呼び出したい見て、オンラインの方法を取る方法は、大法コメントはありません!

Python36-32 \ Libの\サイト・パッケージを探す\ジャンゴ\ DB \バックエンド\ mysqlの\ Pythonでbase.pyファイルがロードキングをインストール

次のコード注釈ファイル(pycharm IDEを閉じるために必要な場合があります)

if version < (1, 3, 3):
    raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

第二の穴(STR法をデコードしないタイプ)

一対のペアのペア、PY3はによってのみ復号方法デコードバイトエンコード方式にエンコードされたUnicode STRデフォルトのエンコーディングタイプがあります。
ヒントエラーソース:Python36 \ libには\サイト-パッケージ \ジャンゴ\ DB \バックエンド\ mysqlの\ operations.py」、行149、last_executed_queryで

  • ここでは脳ホール無敵だ私はに依存してデコード方法にエンコードするオンライン検索の束は、です

概要ソース(PIPコンテンツインストール無傷ジャンゴ2.2.1)。

    def last_executed_query(self, cursor, sql, params):
        # With MySQLdb, cursor objects have an (undocumented) "_executed"
        # attribute where the exact query sent to the database is saved.
        # See MySQLdb/cursors.py in the source distribution.
        query = getattr(cursor, '_executed', None)
        if query is not None:
            query = query.decode(errors='replace')
        return query

ゴングクエリ印刷出力結果、コンテンツ

SELECT @@SQL_AUTO_IS_NULL

数据类型为str
  • ここではそこにコメントが有効であり、後遺症は効果がない場合は大法、LZは知らないオンラインのコメントがあり、それが採用されることはありません。

だから私は、このメソッドのファイルの最新のDjangoのgithubの/歴史的なバージョンに目を通すことを行った次のように、最新のマスターブランチの結果を読み取ります。

    def last_executed_query(self, cursor, sql, params):
        # With MySQLdb, cursor objects have an (undocumented) "_executed"
        # attribute where the exact query sent to the database is saved.
        # See MySQLdb/cursors.py in the source distribution.
        # MySQLdb returns string, PyMySQL bytes.
        return force_str(getattr(cursor, '_executed', None), errors='replace')

関数名を見て、それをSQLに変換するために、強制的にSTRアップしなければならない
私は頼ります!このニマ公式サイト2.2.1パッケージは、本書で紹介し、この上記の方法を覚えて、それを傷つけるされていません

from django.utils.encoding import force_str

Managa.pyはその後、それをコマンドを実行します

おすすめ

転載: blog.51cto.com/smilepad/2412322