Spec-Zone.ru › MySQL Workbench

C.6.1 Урок: Генерация PHP-кода для создания подключения с PDO_MySQL

MySQL Workbench включает плагин, который генерирует PHP-код с расширением mysqli. Этот урок показывает, как сгенерировать код с расширением PDO_MySQL для PHP. Возможно, вы выберете другое расширение или другой язык, поэтому соответствующим образом скорректируйте сгенерированный код.

Для начала ознакомьтесь с кодом плагина, показанным в следующем примере.

# import the wb module
from wb import DefineModule, wbinputs
# import the grt module
import grt
# import the mforms module for GUI stuff
import mforms

# define this Python module as a GRT module
ModuleInfo = DefineModule(name= "MySQLPDO", author= "Yours Truly", version="1.0")

@ModuleInfo.plugin("info.yourstruly.wb.mysqlpdo", caption= "MySQL PDO (Connect to Server)", input= [wbinputs.currentSQLEditor()], pluginMenu= "SQL/Utilities")
@ModuleInfo.export(grt.INT, grt.classes.db_query_Editor)

def mysqlpdo(editor):
    """Copies PHP code to connect to the active MySQL connection using PDO, to the clipboard.
    """
    # Values depend on the active connection type
    if editor.connection:
        conn = editor.connection

        if conn.driver.name == "MysqlNativeSocket":
            params = {
            "host" : "",
            "port" : "",
            "user" : conn.parameterValues["userName"],
            "socket" : conn.parameterValues["socket"],
            "dbname" : editor.defaultSchema,
            "dsn" : "mysql:unix_socket={$socket};dbname={$dbname}"
            }
        else:
            params = {
            "host" : conn.parameterValues["hostName"],
            "port" : conn.parameterValues["port"] if conn.parameterValues["port"] else 3306,
            "user" : conn.parameterValues["userName"],
            "socket" : "",
            "dbname" : editor.defaultSchema,
            "dsn" : "mysql:host={$host};port={$port};dbname={$dbname}"
            }
        text = """$host="%(host)s";
$port=%(port)s;
$socket="%(socket)s";
$user="%(user)s";
$password="";
$dbname="%(dbname)s";

try {
    $dbh = new PDO("%(dsn)s", $user, $password));
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

""" % params
        mforms.Utilities.set_clipboard_text(text)
        mforms.App.get().set_status_text("Copied PHP code to clipboard")
    return 0

Этот простой плагин генерирует PHP-код для создания подключения к MySQL с использованием расширения PHP PDO_MySQL. Определение DSN зависит от типа подключения в MySQL Workbench. Часть, которую вы можете захотеть изменить, находится в текстовом определении.

Чтобы сгенерировать PHP-код для подключения, сначала установите плагин следующим образом:

  1. Скопируйте код плагина в новый файл. Имя файла в этом примере — php-pdo-connect_grt.py, но вы можете использовать другое имя, при условии, что _grt.py — это суффикс.

  2. Запустите MySQL Workbench. Нажмите Сценарии, а затем Установить плагин/модуль в меню, чтобы открыть файловый браузер. Выберите файл плагина, созданный кодом на предыдущем шаге, в этом случае php-pdo-connect_grt.py.

    Примечание

    Вы можете скопировать файл напрямую в папку плагинов вместо использования интерфейса Установить плагин/модуль. Результат будет тем же.

  3. После запроса перезапустите MySQL Workbench. На этом шаге из вашего исходного файла генерируется скомпилированный байт-код (.pyc). В этом примере это php-pdo-connect_grt.pyc.

  4. После перезапуска MySQL Workbench загрузите подключение MySQL, которое нужно использовать для генерации PHP-кода. В меню нажмите Сервис, Утилиты, а затем MySQL PDO (Подключиться к серверу), что является Caption, определенным в коде плагина.

    Это действие копирует сгенерированный PHP-код в буфер обмена вашей системы. В следующем примере подключения «sakila» определяется как база данных по умолчанию в сгенерированном коде.

    $host="localhost";
    $port=3306;
    $socket="";
    $user="root";
    $password="";
    $dbname="sakila";
    
    try {
        $dbh = new PDO("mysql:host={$host};port={$port};dbname={$dbname}", $user, $password));
    } catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
    }         
            

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/workbench-en/wb-tutorial-plugins-php-pdo.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API