MySQL 工作台  / 附录 C 扩展工作台  / C.6 教程:编写插件  /  C.6.1 教程:生成 PHP 代码以创建与 PDO_MySQL 的连接

C.6.1 教程:生成 PHP 代码以创建与 PDO_MySQL 的连接

MySQL Workbench 包含一个插件,可以生成带有 mysqli扩展名的 PHP 代码。本教程展示了如何使用PDO_MySQLPHP 扩展生成代码。您可能会选择不同的扩展或完全不同的语言,因此相应地调整生成的代码。

首先,查看以下示例中显示的插件代码。

# 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

PDO_MySQL这个简单的插件生成 PHP 代码以使用 PHP 的扩展 创建 MySQL 连接。DSN 定义取决于 MySQL Workbench 中的连接类型。您可能要修改的部分在文本定义中。

要为连接生成 PHP 代码,首先按如下方式安装插件:

  1. 将插件代码复制到一个新文件中。本示例中使用的文件名为php-pdo-connect_grt.py,但您可以使用不同的名称,只要 _grt.py后缀为 即可。

  2. 启动 MySQL 工作台。单击脚本,然后从菜单中单击安装插件/模块以打开文件浏览器。在本例中,选择上一步代码创建的插件文件 php-pdo-connect_grt.py

    笔记

    您可以将文件直接复制到插件文件夹,而不是使用安装插件/模块界面。结果是一样的。

  3. 出现提示时,重新启动 MySQL Workbench。.pyc此步骤从您的源文件生成一个已编译的字节码文件 ( )。在此示例中,它生成 php-pdo-connect_grt.pyc.

  4. 重新启动 MySQL Workbench 后,加载用于生成 PHP 代码的 MySQL 连接。从菜单中,单击 ToolsUtilities,然后 单击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();
    }