全部產品
Search
文件中心

Lindorm:基於Python DB-API的應用開發

更新時間:Jul 06, 2024

本文介紹通過Python DB-API開發Lindorm寬表應用的方法和樣本。

前提條件

  • 已安裝Python環境,且Python版本為3.7及以上版本。

  • 已將用戶端的IP地址添加至Lindorm白名單。如何添加,請參見設定白名單

使用限制

LindormServerless不支援通過Python DB-API訪問Lindorm寬表引擎。

操作步驟

  1. 執行pip install phoenixdb命令安裝phoenixdb,以1.2.0版本為例。

    pip install phoenixdb==1.2.0
  2. 指定串連資料庫的名稱、使用者名稱以及密碼,初始化串連參數。

    connect_kw_args = {'lindorm_user': '<userName>', 'lindorm_password': '<userPassword>', 'database': '<database>'}

    參數說明

    參數

    說明

    lindorm_user

    Lindorm的使用者名稱、密碼。

    如果忘記密碼,可以通過Lindorm寬表引擎的叢集管理系統修改密碼,具體操作請參見系統管理使用者

    lindorm_password

    database

    資料庫名稱。您可以指定任意有許可權的資料庫。

    如果沒有指定資料庫,則預設串連default資料庫。

  3. 指定資料庫連接地址database_url和串連的初始化參數connect_kw_args,建立資料庫連接。

    database_url = '<lindorm_sql_url>'
    connection = phoenixdb.connect(database_url, autocommit=True, **connect_kw_args)

    參數說明

    參數

    說明

    database_url

    Lindorm寬表SQL地址。擷取串連地址,請參見查看串連地址

    如果用戶端部署在與Lindorm相同VPC的ECS上,可以使用專用網路地址,否則請先開通公網地址,並使用公網地址。

    配置時,請刪除串連地址http之前的字串。

    樣本:database_url = 'http://ld-bp10m54739kg9****-proxy-lindorm.lindorm.rds.aliyuncs.com:30060'

    autocommit

    自動認可,取值必須為true。

    **connect_kw_args

    將步驟2connect_kw_args中的所有關鍵字參數傳遞給phoenixdb.connect()方法,用於建立資料庫連接。

  4. 建立串連後,執行DDL操作和DML操作,範例程式碼如下。

    with connection.cursor() as statement:
        # 建立表
        sql_create_table = "create table if not exists test_python(c1 integer, c2 integer, primary key(c1))"
        print(sql_create_table)
        statement.execute(sql_create_table)
    
        # 插入一行資料
        sql_upsert = "upsert into test_python(c1, c2) values(1,1)"
        print(sql_upsert)
        statement.execute(sql_upsert)
    
        # 插入多行資料
        with connection.cursor() as stat:
            sql_upsert = "upsert into test_python(c1, c2) values(?,?)"
            print(sql_upsert)
            stat.executemany(sql_upsert, [(2, 2), (3, 3)])
    
        # 刪除資料
        sql_delete = "delete from test_python where c1=2"
        print(sql_delete)
        statement.execute(sql_delete)
    
        # 修改資料
        sql_update = "upsert into test_python(c1, c2) values(1,10)"
        print(sql_update)
        statement.execute(sql_update)
    
        # 查詢
        sql_select = "select * from test_python"
        print(sql_select)
        statement.execute(sql_select)
        rows = statement.fetchall()
        print(rows)
    
        # 禁用表。寬表引擎版本為2.2.16至2.4.1時,刪除表前需先禁用表
        sql_offline_table = "offline table test_python"
        print(sql_offline_table)
        statement.execute(sql_offline_table)
    
        # 刪除表
        sql_drop_table = "drop table if exists test_python"
        print(sql_drop_table)
        statement.execute(sql_drop_table)
    
    # 關閉串連
    connection.close()
    說明

    完整的範例程式碼請參見Python使用樣本

文法參考

關於Lindorm寬表SQL的文法使用請參見Lindorm寬表SQL文法手冊