Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

lỗi nhập với python-mysql-connector 1.16, django 1.6 và python 3.2.3

Sau khi nghiên cứu mã, có vẻ như có một số loại lỗi khi tham chiếu đến lần nhập đó. Tôi đã xem xét tệp /lib/python3.2/site-packages/django/utils/six.py và tìm thấy vị trí tham chiếu đến mô-đun move.zip_longest.

Đầu tiên là tham chiếu này:

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

Có nghĩa là nó đang gọi lớp _MovedItems và ở đây nó có tham chiếu đến mô-đun của tôi đã bị hỏng.

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

Sau đó kế thừa từ lớp _LazyDescr, nhưng đó là một đối tượng nhỏ ngắn. Tôi không biết mọi thứ đã sai ở đâu, nếu bạn ánh xạ bộ tuple được chuyển vào phương thức khởi tạo MovedAttribute, nó sẽ ánh xạ chính xác phiên bản cũ sang phiên bản mới. Tôi không chắc tại sao nó không thành công nhưng nếu bạn xóa câu lệnh nhập trong tệp compiler.py và chỉ cần gọi trực tiếp itertools zip_longest, thì tất cả đều hoạt động.

Đây là những gì nó trông như thế nào. Nếu bạn đang sử dụng Python 3, hãy chỉnh sửa tệp /lib/python3.2/site-packages/mysql/connector/django/compiler.py và thay đổi dòng 6 từ tệp này:

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

về điều này:

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 cập nhật cùng một hàng bởi nhiều người dùng như bộ đếm

  2. Làm thế nào để TỔNG và SUBTRACT bằng cách sử dụng SQL?

  3. Cập nhật H2 với tham gia

  4. Django:Sử dụng chèn SQL thô tùy chỉnh với thực thi và MySQL

  5. vòng lặp mysql cho kết quả là php bên ngoài truy vấn mysql