Hướng dẫn pyodbc mysql workbench - bàn làm việc mysql pyodbc

Cài đặt trình điều khiển ODBC cho MySQL

Một trong những phương pháp thuận tiện nhất để kết nối với cơ sở dữ liệu bên ngoài hoặc truy cập dữ liệu đám mây từ Python là thông qua ODBC. Devart đã phát triển một loạt các trình điều khiển ODBC để Python làm việc với cơ sở dữ liệu và dịch vụ đám mây.

Nếu bạn chưa cài đặt Python trên máy của mình, hãy truy cập trang web chính thức của Python, tải xuống trình cài đặt thích hợp và chạy nó. Bạn cũng sẽ cần cài đặt mô -đun PYODBC - cách dễ nhất để làm điều đó là bằng cách sử dụng lệnh PIP Install PyodBC trong chế độ tương tác Python. Tiếp theo, bạn cần tải xuống trình điều khiển ODBC cho MySQL. Để sử dụng trình điều khiển ODBC làm lớp dịch giữa ứng dụng và cơ sở dữ liệu, bạn cần định cấu hình nó bằng cách làm theo các hướng dẫn cài đặt.pyodbc module — the easiest way to do that is by using the pip install pyodbc command in the Python interactive mode. Next, you need to download the ODBC Driver for MySQL. To use the ODBC driver as a translation layer between the application and the database, you need to configure it by following the installation instructions.

Dưới đây, một ví dụ để chỉ cho bạn cách kết nối với MySQL thông qua trình điều khiển ODBC Devart ở Python. Trước tiên, chúng tôi nhập mô -đun PYODBC, sau đó tạo kết nối vào cơ sở dữ liệu, chèn một hàng mới và đọc nội dung của bảng EMP trong khi in từng hàng vào bảng điều khiển tương tác Python. Để thực thi tập lệnh, bạn có thể nhập mã trực tiếp vào bảng điều khiển tương tác hoặc thêm mã vào tệp với tiện ích mở rộng .Py và chạy tệp từ dấu nhắc lệnh.

Bước 1: Kết nối

import pyodbc 
cnxn = pyodbc.connect('DRIVER={Devart ODBC Driver for MySQL};User ID=myuserid;Password=mypassword;Server=myserver;Database=mydatabase;Port=myport;String Types=Unicode')

Bước 2: Chèn một hàng

Dưới đây là một ví dụ đơn giản về cách thực thi câu lệnh chèn để kiểm tra kết nối với cơ sở dữ liệu. Kịch bản chèn một bản ghi mới vào bảng EMP.

cursor = cnxn.cursor()
cursor.execute("INSERT INTO EMP (EMPNO, ENAME, JOB, MGR) VALUES (535, 'Scott', 'Manager', 545)") 

Bước 3: Thực thi truy vấn

Hàm con trỏ.execute () lấy các hàng từ truy vấn chọn trên bộ dữ liệu. Hàm con trỏ.fetchone () lặp lại trên tập kết quả được trả về bởi con trỏ.execute () trong khi hàm in () in ra tất cả các bản ghi từ bảng đến bảng điều khiển.

cursor = cnxn.cursor()	
cursor.execute("SELECT * FROM EMP") 
row = cursor.fetchone() 
while row:
	print (row) 
	row = cursor.fetchone()

10.1.1 & NBSP; Thư viện ODBC

Ghi chú

Phần này có thể được bỏ qua khi sử dụng nhị phân MySQL Workbench do Oracle cung cấp.

Một thư viện Trình quản lý trình điều khiển ODBC phải có mặt. Cả Windows và MacOS đều cung cấp một.

Linux

iODBC: Các nhị phân của MySQL Workbench do Oracle cung cấp đã bao gồm IODBC và không có hành động bổ sung nào được yêu cầu. Nếu bạn tự biên dịch nó, bạn phải cài đặt IODBC hoặc UNIXODBC. IODBC được khuyến nghị. Bạn có thể sử dụng thư viện IODBC được cung cấp bởi phân phối của bạn bằng cách cài đặt gói LIBIODBC2 trên các hệ thống dựa trên Debian hoặc LIBIODBC trên các hệ thống dựa trên RPM.

pyodbc: Mô -đun Python được MySQL Workbench sử dụng để giao diện với ODBC và có thể được sử dụng để di chuyển các cơ sở dữ liệu tuân thủ ODBC như PostgreSQL và DB2. Trong Windows và MacOS, nó được bao gồm với Workbench. Trong Linux, các nhị phân được cung cấp bởi Oracle cũng bao gồm PYODBC.

Nếu bạn đang sử dụng nhị phân tự biên dịch, hãy chắc chắn rằng bạn có phiên bản mới nhất và nó được biên dịch với thư viện Trình quản lý ODBC mà bạn đã chọn, cho dù đó là IODBC hay UNIXODBC. Kể từ phiên bản 3.0.6, PYODBC sẽ biên dịch với UNIXODBC theo mặc định. Nếu bạn đang tổng hợp với IODBC thì bạn phải thực hiện các bước sau:

  1. Để biên dịch, hãy chắc chắn rằng bạn đã cài đặt các tiêu đề IODBC. Đối với Linux, tên phụ thuộc vào trình quản lý gói hệ thống của bạn nhưng tên phổ biến là libiodbc-devel (hệ thống dựa trên vòng / phút) hoặc libiodbc2-dev (hệ thống dựa trên Debian). Đối với các macOS, các tiêu đề đi kèm với hệ thống và không cần hành động bổ sung cho bước này.

  2. Trong thư mục nguồn PYODBC, chỉnh sửa tệp setup.py và xung quanh dòng 157, thay thế dòng sau: settings['libraries'].append('odbc') bằng settings['libraries'].append('iodbc')

  3. Thực hiện lệnh sau làm người dùng gốc:

    cursor = cnxn.cursor()
    cursor.execute("INSERT INTO EMP (EMPNO, ENAME, JOB, MGR) VALUES (535, 'Scott', 'Manager', 545)") 
    
    0


  • Lượt xem
  • Thêm bình luận
  • Các tập tin
  • Nhà phát triển
  • Chỉnh sửa đệ trình
  • Xem nhật ký tiến trình
  • Đóng góp

Description:
When going into migration I get the warning "Could not import the pyodbc python module. You need pyodbc 2.1.8 or newer for migrations from RDBMSes other than MySQL.". This happens due to python not finding the pyodbc module. I don't find any way of installing pyodbc for python2.7. It seems to only work with python3. That being said, it appears that WB only works with python2. If I continue to try and use Generic RDBMS, it fails when I select "ODBC Data Source" as the connection method and the log contains:

12:52:02 [ERR][         python]: error calling DbGenericRE.getDataSourceNamesTraceback (most recent call last):
12:52:02 [ERR][         python]:   File "/usr/lib/mysql-workbench/modules/db_generic_re_grt.py", line 673, in getDataSourceNames
12:52:02 [ERR][         python]:     return GenericReverseEngineering.getDataSourceNames()
12:52:02 [ERR][         python]:   File "/usr/lib/mysql-workbench/modules/db_generic_re_grt.py", line 93, in getDataSourceNames
12:52:02 [ERR][         python]:     import pyodbc
12:52:02 [ERR][         python]: ImportError: No module named pyodbc
12:52:02 [ERR][ DbConnectPanel]: Error calling get_enum_options() for param dsn: error calling Python module function DbGenericRE.getDataSourceNamesSaved connection list (MySQL: 1)

I cannot find any workaround for getting pyodbc to load. I have installed WB from mysql-workbench-community_8.0.22-1ubuntu20.04_amd64.deb and also from snap's mysql-workbench-community from tonybolzan. They both have the same error.

How to repeat:
In WB, go to Start Migration. A pop-up message appears: Could not import the pyodbc python module. You need pyodbc 2.1.8 or newer for migrations from RDBMSes other than MySQL.

Suggested fix:
I'm not the expert, but upgrading migration to use python3 would be one obvious solution. I cannot find any other means for getting past this seemingly dependency issue.