本文介紹通過Python DB-API開發Lindorm寬表應用的方法和樣本。
前提條件
已安裝Python環境,且Python版本為3.7及以上版本。
已將用戶端的IP地址添加至Lindorm白名單。如何添加,請參見設定白名單。
使用限制
LindormServerless不支援通過Python DB-API訪問Lindorm寬表引擎。
操作步驟
執行
pip install phoenixdb
命令安裝phoenixdb,以1.2.0版本為例。pip install phoenixdb==1.2.0
指定串連資料庫的名稱、使用者名稱以及密碼,初始化串連參數。
connect_kw_args = {'lindorm_user': '<userName>', 'lindorm_password': '<userPassword>', 'database': '<database>'}
參數說明
參數
說明
lindorm_user
Lindorm的使用者名稱、密碼。
如果忘記密碼,可以通過Lindorm寬表引擎的叢集管理系統修改密碼,具體操作請參見系統管理使用者。
lindorm_password
database
資料庫名稱。您可以指定任意有許可權的資料庫。
如果沒有指定資料庫,則預設串連default資料庫。
指定資料庫連接地址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()方法,用於建立資料庫連接。
建立串連後,執行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文法手冊。