or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

async-operations.mdclient-operations.mdcontainer-operations.mddatabase-operations.mdindex.mdscript-operations.mduser-management.md

client-operations.mddocs/

0

# Client Operations

1

2

Account-level operations for Azure Cosmos DB including authentication, database management, and client configuration. The CosmosClient serves as the entry point for all Azure Cosmos DB operations.

3

4

## Capabilities

5

6

### Client Initialization

7

8

Initialize the Cosmos client with account endpoint and authentication credentials.

9

10

```python { .api }

11

class CosmosClient:

12

def __init__(self, url: str, credential: Union[str, Dict[str, Any], TokenCredential], consistency_level: str = None, **kwargs):

13

"""

14

Initialize a new CosmosClient.

15

16

Parameters:

17

- url: Account endpoint URL

18

- credential: Account key, resource token, token dictionary, or TokenCredential

19

- consistency_level: Default consistency level for operations

20

- connection_timeout: Connection timeout in seconds

21

- request_timeout: Request timeout in seconds

22

- connection_mode: Connection mode (Gateway or Direct)

23

- proxy_config: Proxy configuration

24

- ssl_config: SSL configuration

25

- connection_verify: Enable SSL certificate verification

26

- connection_cert: Client certificate file

27

- retry_total: Total number of retries

28

- retry_backoff_factor: Backoff factor for retries

29

- retry_on_status_codes: HTTP status codes to retry on

30

- enable_endpoint_discovery: Enable automatic endpoint discovery

31

"""

32

```

33

34

### Alternative Client Creation

35

36

Create client from connection string for simplified configuration.

37

38

```python { .api }

39

@classmethod

40

def from_connection_string(cls, conn_str: str, credential: str = None, consistency_level: str = None, **kwargs) -> CosmosClient:

41

"""

42

Create a CosmosClient from connection string.

43

44

Parameters:

45

- conn_str: Azure Cosmos DB connection string

46

- credential: Account key (if not in connection string)

47

- consistency_level: Default consistency level

48

- **kwargs: Additional client options

49

50

Returns:

51

CosmosClient instance

52

"""

53

```

54

55

Usage example:

56

57

```python

58

# From connection string

59

client = CosmosClient.from_connection_string(

60

conn_str="AccountEndpoint=https://account.documents.azure.com:443/;AccountKey=key==",

61

consistency_level=ConsistencyLevel.Session

62

)

63

```

64

65

### Database Management

66

67

Create, list, query, and delete databases within the account.

68

69

```python { .api }

70

def create_database(self, id: str, populate_query_metrics: bool = None, offer_throughput: Union[int, ThroughputProperties] = None, **kwargs):

71

"""

72

Create a new database.

73

74

Parameters:

75

- id: Database ID

76

- populate_query_metrics: Include query metrics in response

77

- offer_throughput: Provisioned throughput in RU/s

78

- session_token: Session token for consistency

79

- initial_headers: Custom headers

80

- etag: ETag for conditional operations

81

- match_condition: Match condition for conditional operations

82

83

Returns:

84

DatabaseProxy for the created database

85

86

Raises:

87

CosmosResourceExistsError: If database already exists

88

"""

89

90

def create_database_if_not_exists(self, id: str, populate_query_metrics: bool = None, offer_throughput: Union[int, ThroughputProperties] = None, **kwargs):

91

"""

92

Create database if it doesn't exist, otherwise return existing.

93

94

Parameters: Same as create_database

95

96

Returns:

97

DatabaseProxy for the database

98

"""

99

100

def get_database_client(self, database: str) -> DatabaseProxy:

101

"""

102

Get a database client for operations on a specific database.

103

104

Parameters:

105

- database: Database ID or DatabaseProxy instance

106

107

Returns:

108

DatabaseProxy instance

109

"""

110

111

def list_databases(self, max_item_count: int = None, populate_query_metrics: bool = None, **kwargs):

112

"""

113

List all databases in the account.

114

115

Parameters:

116

- max_item_count: Maximum number of items to return

117

- populate_query_metrics: Include query metrics

118

- session_token: Session token for consistency

119

120

Returns:

121

Iterable of database items

122

"""

123

124

def query_databases(self, query: str = None, parameters: list = None, enable_cross_partition_query: bool = None, max_item_count: int = None, populate_query_metrics: bool = None, **kwargs):

125

"""

126

Query databases using SQL-like syntax.

127

128

Parameters:

129

- query: SQL query string

130

- parameters: Query parameters as [{"name": "@param", "value": value}]

131

- enable_cross_partition_query: Enable cross-partition queries

132

- max_item_count: Maximum items per page

133

- populate_query_metrics: Include query metrics

134

- partition_key: Partition key value

135

- session_token: Session token for consistency

136

137

Returns:

138

Iterable of query results

139

"""

140

141

def delete_database(self, database: str, populate_query_metrics: bool = None, **kwargs):

142

"""

143

Delete a database.

144

145

Parameters:

146

- database: Database ID or DatabaseProxy instance

147

- populate_query_metrics: Include query metrics

148

- session_token: Session token for consistency

149

- etag: ETag for conditional operations

150

- match_condition: Match condition for conditional operations

151

152

Raises:

153

CosmosResourceNotFoundError: If database doesn't exist

154

"""

155

```

156

157

### Account Information

158

159

Retrieve account-level information and capabilities.

160

161

```python { .api }

162

def get_database_account(self, **kwargs) -> DatabaseAccount:

163

"""

164

Get database account information.

165

166

Parameters:

167

- session_token: Session token for consistency

168

169

Returns:

170

DatabaseAccount with account properties and capabilities

171

"""

172

```

173

174

## Usage Examples

175

176

### Basic Client Setup

177

178

```python

179

from azure.cosmos import CosmosClient, ConsistencyLevel

180

181

# Initialize with explicit endpoint and key

182

client = CosmosClient(

183

url="https://myaccount.documents.azure.com:443/",

184

credential="myaccountkey==",

185

consistency_level=ConsistencyLevel.Session

186

)

187

188

# Initialize with connection string

189

client = CosmosClient.from_connection_string(

190

"AccountEndpoint=https://myaccount.documents.azure.com:443/;AccountKey=key=="

191

)

192

```

193

194

### Database Operations

195

196

```python

197

# Create a new database

198

try:

199

database = client.create_database(

200

id="ProductCatalog",

201

offer_throughput=400

202

)

203

print(f"Created database: {database.id}")

204

except CosmosResourceExistsError:

205

print("Database already exists")

206

database = client.get_database_client("ProductCatalog")

207

208

# List all databases

209

databases = list(client.list_databases())

210

for db in databases:

211

print(f"Database: {db['id']}")

212

213

# Query databases

214

results = list(client.query_databases(

215

query="SELECT * FROM root r WHERE CONTAINS(r.id, @name)",

216

parameters=[{"name": "@name", "value": "Product"}]

217

))

218

219

# Get account information

220

account_info = client.get_database_account()

221

print(f"Account consistency: {account_info.ConsistencyPolicy}")

222

print(f"Writable regions: {account_info.WritableLocations}")

223

```

224

225

### Error Handling

226

227

```python

228

from azure.cosmos.exceptions import (

229

CosmosHttpResponseError,

230

CosmosResourceExistsError,

231

CosmosResourceNotFoundError

232

)

233

234

try:

235

database = client.create_database("MyDatabase")

236

except CosmosResourceExistsError:

237

print("Database already exists")

238

database = client.get_database_client("MyDatabase")

239

except CosmosHttpResponseError as e:

240

print(f"HTTP error occurred: {e.status_code} - {e.message}")

241

```