更新时间:2025-09-04 GMT+08:00
分享

通过Python连接TaurusDB实例

通过Python连接实例的方式有无需下载SSL证书连接和用户下载SSL证书连接两种,其中使用SSL证书连接通过了加密功能,具有更高的安全性。TaurusDB新实例默认开启SSL数据加密,SSL连接实现了数据加密功能,但同时会增加网络连接响应时间和CPU消耗,请评估对业务的性能影响,根据需要进行设置,详细内容请参考设置SSL数据加密

前提条件

用户需要具备以下技能:

  • 熟悉计算机基础知识。
  • 了解Python编程语言。
  • 了解Python基础知识。

通过Python连接实例

使用SSL证书连接实例,即通过证书校验并连接数据库。

  1. 下载CA证书或捆绑包。

    1. “实例管理”页面,单击实例名称进入实例概览页面。
    2. 单击“SSL”开关右侧的“下载”

  2. 通过Python连接TaurusDB数据库,代码中的Python链接格式如下:

    conn = pymysql.connect(
                host=instance_ip,
                port=instance_port,
                user=username,
                password=password,
                database=database_name,
                ssl=ssl_config
            )
    表1 参数说明

    参数

    说明

    instance_ip

    请替换为实例的IP地址。

    • 如果通过弹性云服务器连接,“instance_ip”是实例的“读写内网地址”。您可以在该实例概览页面的“网络信息”区域查看。
    • 如果通过公网连接,“instance_ip”为该实例已绑定的“弹性公网IP”,即读写公网地址。您可以在该实例概览页面的“网络信息”区域查看。
    • 如果开启了数据库代理,通过数据库代理连接TaurusDB实例时,此处的IP为数据库代理地址。您可以在数据库代理页面查看代理地址。

    instance_port

    请替换为实例的数据库端口,默认为3306。

    您可以在该实例概览页面的“网络信息”区域查看。

    database_name

    请替换为连接实例使用的数据库名。

    ssl_config

    CA证书名称,该文件需放在执行该命令的路径下。

    代码示例(连接TaurusDB数据库的Python代码):

    import pymysql
    import os
    
    // 配置数据库连接参数
    instance_ip =  '*.*.*.*' //替换为实例的IP地址
    instance_port = 3306
    database_name = 'my_db_test'
    
    // SSL 配置(使用 CA Bundle 验证服务器证书)
    ssl_config = {
        'ssl': {
            'ca': '/path/to/ca-bundle.pem',  // CA 证书链文件
            'check_hostname': True  // 验证主机名
        }
    }
    
        conn = None
        try:
            // 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放,使用时解密),确保安全。
            // 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。
            username = os.getenv('EXAMPLE_USERNAME_ENV')
            password = os.getenv('EXAMPLE_PASSWORD_ENV')
    
            // 建立数据库连接
            conn = pymysql.connect(
                host=instance_ip ,
                port=instance_port ,
                user=username,
                password=password,
                database=database_name ,
                ssl=ssl_config
            )
    
            print("Database connected(SSL with CA verification)")
    
            with conn.cursor() as cursor:
                // 执行查询
                sql = "SELECT * FROM mytable WHERE columnfoo = 500"
                cursor.execute(sql)
    
                // 获取并打印结果
                results = cursor.fetchall()
                for row in results:
                    print(row)
    
        finally:
            // 关闭数据库连接
            if conn and conn.open:
                conn.close()
                print("Database connection closed")

该方式不对服务端进行证书校验,用户无需下载SSL证书。

  1. 通过Python连接TaurusDB数据库实例,代码中的Python链接格式如下:

    conn = pymysql.connect(
                host=instance_ip,
                port=instance_port,
                user=username,
                password=password,
                database=database_name,
                ssl=ssl_config
            )
    表2 变量说明

    变量

    说明

    instance_ip

    请替换为实例的IP地址。

    • 如果通过弹性云服务器连接,“instance_ip”是实例的“读写内网地址”。您可以在该实例概览页面的“网络信息”区域查看。
    • 如果通过公网连接,“instance_ip”为该实例已绑定的“弹性公网IP”,即读写公网地址。您可以在该实例概览页面的“网络信息”区域查看。

    instance_port

    请替换为实例的数据库端口,默认为3306。

    您可以在该实例概览页面的“网络信息”区域查看。

    database_name

    请替换为连接实例使用的数据库名。

    代码示例(连接TaurusDB数据库的Python代码):

    import pymysql
    import os
    
    // 配置数据库连接参数
    instance_ip= '*.*.*.*' //替换为实例的IP地址
    instance_port= 3306
    database_name= 'my_db_test'
    
        conn = None
        try:
            // 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放,使用时解密),确保安全。
            // 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。
            
            username = os.getenv('EXAMPLE_USERNAME_ENV')
            password = os.getenv('EXAMPLE_PASSWORD_ENV')
    
            // 建立数据库连接
            conn = pymysql.connect(
                host=instance_ip,
                port=instance_port,
                user=username,
                password=password,
                database=database_name,
            )
    
            print("Database connected")
    
            with conn.cursor() as cursor:
                // 执行查询
                sql = "SELECT * FROM mytable WHERE columnfoo = 500"
                cursor.execute(sql)
    
                // 获取并打印结果
                results = cursor.fetchall()
                for row in results:
                    print(row)
    
        finally:
            // 关闭数据库连接
            if conn and conn.open:
                conn.close()
                print("Database connection closed")
    

相关文档