Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

अजगर-mysql-कनेक्टर 1.16, django 1.6, और अजगर 3.2.3 के साथ आयात त्रुटि

कोड का अध्ययन करने के बाद ऐसा लगता है कि उस आयात को संदर्भित करते समय किसी प्रकार की त्रुटि है। मैंने /lib/python3.2/site-packages/django/utils/six.py फ़ाइल में देखा और पाया कि move.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 वर्ग से विरासत में मिलता है, लेकिन वह एक छोटी सी वस्तु है। मुझे नहीं पता कि चीजें कहां गलत हुईं, यदि आप मूव एट्रिब्यूट कंस्ट्रक्टर में पास किए जा रहे टपल को मैप करते हैं तो यह पुराने संस्करण को नए में सही ढंग से मैप करता है। मुझे यकीन नहीं है कि यह क्यों विफल हो रहा है, लेकिन यदि आप कंपाइलर.py फ़ाइल में आयात विवरण हटाते हैं और सीधे सीधे itertools zip_longest कहते हैं, तो यह सब काम करता है।

यहाँ ऐसा दिखता है। यदि आप पायथन 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL 5.6 - ALGORITHM=inplace का उपयोग करने पर भी टेबल लॉक हो जाता है

  2. #1075 - गलत तालिका परिभाषा; केवल एक ऑटो कॉलम हो सकता है और इसे एक कुंजी के रूप में परिभाषित किया जाना चाहिए

  3. SQL क्वेरी परिणाम में किसी अन्य तालिका से एकाधिक चर बदलें

  4. जब फ़ाइल किसी अन्य स्थान पर हो तो LOAD DATA INFILE स्टेटमेंट का उपयोग कैसे करें?

  5. क्या InnoDB छँटाई वास्तव में इतनी धीमी है?