sql >> Database >  >> RDS >> Mysql

importfout met python-mysql-connector 1.16, django 1.6 en python 3.2.3

Na bestudering van de code lijkt het erop dat er een fout is opgetreden bij het verwijzen naar die import. Ik keek in het bestand /lib/python3.2/site-packages/django/utils/six.py en vond waar de verwijzing was naar de module moves.zip_longest.

Eerst was deze referentie:

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

Wat betekent dat het de _MovedItems-klasse aanriep, en hier is het met de verwijzing naar mijn module die brak.

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

Die erft dan van de klasse _LazyDescr, maar dat is een klein klein object. Ik weet niet waar het mis is gegaan, als je de tuple die wordt doorgegeven aan de MovedAttribute-constructor toewijst, wordt de oude versie correct toegewezen aan de nieuwe. Ik weet niet zeker waarom het niet werkt, maar als je de import-instructie in het compiler.py-bestand verwijdert en itertools zip_longest gewoon rechtstreeks aanroept, werkt het allemaal.

Hier is hoe dat eruit ziet. Als je Python 3 gebruikt, bewerk dan het bestand /lib/python3.2/site-packages/mysql/connector/django/compiler.py en wijzig regel 6 hiervan:

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

naar dit:

from itertools import zip_longest



  1. MySQL werkt een veld bij met een oplopende variabele

  2. Selecteer een waarde uit een groep op basis van volgorde uit andere kolommen

  3. hibernate hql - retourneer bijgewerkte rijen-ID-lijst na het uitvoeren van de update-query

  4. Tabellen zoeken die een specifieke kolom bevatten in SQL Server