
# 通过Python操作Serverless表
本章节主要介绍使用Python语言操作Serverless表。
#### 使用须知
仅支持GeminiDB兼容DynamoDB接口的Serverless表。
#### 前提条件
- 已成功创建GeminiDB Serverless终端节点。
- 已创建弹性云服务器，创建弹性云服务器的方法，请参见《弹性云服务器》中"[创建弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)"章节。
- 弹性云服务器上已经安装Python环境及boto3库。 如需手动安装 boto3，可执行命令：pip install boto3。
  
 
#### 连接示例
将下面代码示例中的IP地址（\*\*\*.\*\*\*.\*\*\*.\*\*\*）替换为终端节点列表查到的IP。
下面代码示例中的region替换为实际的region。
Python样例如下：
```
#!/usr/bin/python
import boto3
url = 'http://***.***.***.***'
dynamodb = boto3.resource('dynamodb',
                          endpoint_url=url, 
                          aws_access_key_id='ak', 
                          aws_secret_access_key='sk', 
                          region_name="region")
```
#### 创建Serverless表示例
在连接Serverless成功后，创建Serverless表的Python样例如下：
```
#!/usr/bin/python
import boto3
TABLE_NAME = 'test_table'
table = dynamodb.create_table(
    AttributeDefinitions=[
        {
            'AttributeName': 'id',
            'AttributeType': 'S'
        },
    ],
    BillingMode='PROVISIONED',
    TableName=TABLE_NAME,
    KeySchema=[
        {
            'AttributeName': 'id',
            'KeyType': 'HASH'
        },
    ],
)
```
#### 写Serverless表示例
创建Serverless表成功后，写Serverless表的Python样例如下：
```
#!/usr/bin/python
import boto3
for i in range(0, 100):
    dynamodb.batch_write_item(RequestItems={
        TABLE_NAME: [
            {
                'PutRequest': {
                    'Item': {
                        'id': str(i), 'x': {'hello': 'world'}
                    }
                },
            }
        ]
    })
```
#### 查询Serverless表示例
查询Serverless表的Python样例如下：
```
#!/usr/bin/python
import boto3
for i in range(0, 100):
    print(dynamodb.batch_get_item(RequestItems={
        TABLE_NAME: {'Keys': [{'id': str(i)}]}
    }))
```
