<उप>इस उत्तर में न केवल लिनक्स के लिए बल्कि अन्य ओएस के लिए इंस्टॉलेशन शामिल है, इसके अलावा यह pyqt5 के लिए भी लागू होता है
Qt द्वारा उपयोग की जाने वाली बायनेरिज़ वही हैं जिनका उपयोग PyQt5/PySide2 द्वारा किया जाता है क्योंकि वे समान बेस कोड का उपयोग करते हैं इसलिए आपको प्लगइन्स को संकलित करना होगा।
इस मामले में, mysql प्लगइन को संकलित करने के लिए आपको आधिकारिक मैनुअल का पालन करना होगा , जो संक्षेप में है:
- निर्भरता स्थापित करें, इस मामले में mysql-connector-c
- उसी संस्करण का Qt इंस्टॉल करें जिसके साथ pyqt5/pyside2 संकलित किया गया था और विकास उपकरण जैसे विंडोज़ पर MSVC, Ubuntu पर बिल्ड-एसेंशियल, MacOS पर XCode, आदि।
- स्रोत कोड डाउनलोड करें, इस मामले में qtbase रिपॉजिटरी ।
- प्लगइन संकलित करें।
क्यूटी के संस्करण का पता लगाने के लिए जिस संस्करण के साथ पुस्तकालय संकलित किया गया था, उसका उपयोग किया जा सकता है:
- PyQt5
python -c "from PyQt5.QtCore import QT_VERSION_STR; print('Qt version', QT_VERSION_STR)"
- पायसाइड2
python -c "from PySide2.QtCore import qVersion; print('Qt version', qVersion())"
उपरोक्त OS के आधार पर libqsqlmysql.so, qsqlmysql.dll या libqsqlmysql.dylib उत्पन्न करता है। उस फ़ाइल को पथ में चिपकाया जाना चाहिए:
- PyQt5:
python -c "import os; from PyQt5.QtCore import QLibraryInfo; print('QT_SQL_DRIVER_PATH', os.path.join(QLibraryInfo.location(QLibraryInfo.PrefixPath), 'plugins', 'sqldrivers'))"
- पायसाइड2:
python -c "import os; from PySide2.QtCore import QLibraryInfo; print('QT_SQL_DRIVER_PATH', os.path.join(QLibraryInfo.location(QLibraryInfo.PrefixPath), 'plugins', 'sqldrivers'))"
सभी मामलों को कवर करने के लिए मैंने एक जीथब एक्शन बनाया है जो बायनेरिज़ उत्पन्न करता है:
name: generate_mysql_plugin
on: [push]
jobs:
ci:
name: ${{ matrix.os.name }} Qt-${{ matrix.qt.qt_version }}
runs-on: ${{ matrix.os.runs-on }}
strategy:
fail-fast: false
matrix:
os:
- name: Windows
extension: "dll"
runs-on: windows-2019
- name: Linux
extension: "so"
runs-on: ubuntu-20.04
- name: MacOS
extension: "dylib"
runs-on: macos-10.15
qt:
- name: 5.15
qt_version: 5.15.0
steps:
- name: Checkout
uses: actions/[email protected]
- name: Install Qt
uses: jurplel/[email protected]
with:
version: ${{ matrix.qt.qt_version }}
dir: ${{ github.workspace }}/qt/
- name: clone qtbase
run: git clone -b ${{ matrix.qt.qt_version }} https://code.qt.io/qt/qtbase.git
- name: Compile mysql plugin on Windows
if: matrix.os.name == 'Windows'
shell: cmd
run: |
choco install wget
wget https://downloads.mysql.com/archives/get/p/19/file/mysql-connector-c-6.1.11-winx64.zip
unzip mysql-connector-c-6.1.11-winx64.zip
copy /y "mysql-connector-c-6.1.11-winx64\lib\libmysql.dll" .
call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat"
cd qtbase/src/plugins/sqldrivers
qmake -- MYSQL_INCDIR="${{ github.workspace }}\mysql-connector-c-6.1.11-winx64\include" MYSQL_LIBDIR="${{ github.workspace }}\mysql-connector-c-6.1.11-winx64\lib"
nmake sub-mysql
nmake install
- name: Compile mysql plugin on Linux
if: matrix.os.name == 'Linux'
run: |
wget https://downloads.mysql.com/archives/get/p/19/file/mysql-connector-c-6.1.11-linux-glibc2.12-x86_64.tar.gz
tar zxvf mysql-connector-c-6.1.11-linux-glibc2.12-x86_64.tar.gz
sudo cp mysql-connector-c-6.1.11-linux-glibc2.12-x86_64/lib/*.so /usr/lib/x86_64-linux-gnu
sudo apt-get install freetds-dev
cd qtbase/src/plugins/sqldrivers
qmake
cd mysql
qmake
make
make install
- name: Compile mysql plugin on MacOS
if: matrix.os.name == 'MacOs'
run: |
brew install wget
wget https://cdn.mysql.com/archives/mysql-connector-c/mysql-connector-c-6.1.11-macos10.12-x86_64.tar.gz
tar zxvf mysql-connector-c-6.1.11-macos10.12-x86_64.tar.gz
sudo cp mysql-connector-c-6.1.11-macos10.12-x86_64/lib/libmysqlclient.dylib mysql-connector-c-6.1.11-macos10.12-x86_64/lib/libmysqlclient_r.dylib
sudo cp mysql-connector-c-6.1.11-macos10.12-x86_64/lib/libmysqlclient.18.dylib mysql-connector-c-6.1.11-macos10.12-x86_64/lib/libmysqlclient_r.18.dylib
sudo cp mysql-connector-c-6.1.11-macos10.12-x86_64/lib/*.dylib /usr/local/lib
cd qtbase/src/plugins/sqldrivers
qmake -- MYSQL_PREFIX="${{ github.workspace }}/mysql-connector-c-6.1.11-macos10.12-x86_64"
make sub-mysql
cd mysql
make install
- name: upload
uses: actions/[email protected]
with:
path: qtbase/src/plugins/sqldrivers/plugins/sqldrivers/*qsqlmysql.${{ matrix.os.extension }}
name: mysqlplugin-${{ matrix.os.name }}-Qt${{ matrix.qt.name }}
पिछला कोड प्लगइन उत्पन्न करता है जिसे आप यहां पा सकते हैं। ।
उबंटू के विशिष्ट मामले में इसे घटाया जा सकता है:
- कॉपी करें QT_SQL_DRIVER_PATH पर फ़ाइल करें।
- निष्पादित करें
sudo apt install libmysqlclient-dev
विंडोज़ के विशिष्ट मामले में इसे घटाया जा सकता है:
- कॉपी करें QT_SQL_DRIVER_PATH पर फ़ाइल करें।
- डाउनलोड करें विंडोज़ के लिए mysql-कनेक्टर-सी और अपनी स्क्रिप्ट के आगे libmysql.dll को कॉपी करें।