sql >> データベース >  >> RDS >> Mysql

python-mysql-connector 1.16、django 1.6、およびpython3.2.3でのインポートエラー

    コードを調べた後、そのインポートを参照するときに何らかのエラーがあるように見えます。 /lib/python3.2/site-packages/django/utils/six.pyファイルを調べたところ、moves.zip_longestモジュールへの参照がどこにあるかがわかりました。

    最初はこのリファレンスでした:

    moves = sys.modules[__name__ + ".moves"] = _MovedItems(__name__ + ".moves")
    

    これは、_MovedItemsクラスを呼び出していたことを意味します。ここでは、壊れていたモジュールへの参照があります。

    class _MovedItems(_LazyModule):
        """Lazy loading of moved objects"""
    
        _moved_attributes = [
            MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest")
    
    class MovedAttribute(_LazyDescr):
    
        def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None):
            super(MovedAttribute, self).__init__(name)
            if PY3:
                if new_mod is None:
                new_mod = name
                self.mod = new_mod
                if new_attr is None:
                    if old_attr is None:
                        new_attr = name
                    else:
                        new_attr = old_attr
                self.attr = new_attr
    

    これは_LazyDescrクラスから継承しますが、これは短い小さなオブジェクトです。どこで問題が発生したのかわかりません。MovedAttributeコンストラクターに渡されるタプルをマップすると、古いバージョンが新しいバージョンに正しくマップされます。失敗する理由はわかりませんが、compiler.pyファイルのimportステートメントを削除し、itertools zip_longestを直接呼び出すだけで、すべて機能します。

    これがそのように見えるものです。 Python 3を使用している場合は、/lib/python3.2/site-packages/mysql/connector/django/compiler.pyファイルを編集し、6行目を次のように変更します。

    from django.utils.six.moves import zip_longest as six_zip_longest
    

    これに:

    from itertools import zip_longest
    



    1. PHPMYSQL-127.0.0.1とlocalhostの違い

    2. コンマ区切りのリストに基づいて結果を選択する SSRS

    3. 本番データベースのFlyway-移行チェックサムの不一致

    4. QtQMYSQLドライバーがWindowsにロードされていません