A newer version of this documentation is available.

View Latest
March 16, 2025
+ 12
The Python SDK lets you create users, assign them roles and associated privileges, and remove them from the system.

User-Management APIs

Users who have been assigned the Admin role for the cluster are able to create, edit, and remove users. The Python SDK provides APIs to support these activities. A high-level summary of the APIs can be found in User-Management, and details of all options in the UserManager API docs.

Using the UserManager API

The most common uses of the UserManager API are creating and listing users:

Creating Users
python
user_manager = adm_cluster.users() user = User(username=username, display_name="Test User", roles=[ # Roles required for reading data from bucket Role(name="data_reader", bucket="*"), Role(name="query_select", bucket="*"), # Roles require for writing data to bucket Role(name="data_writer", bucket=bucket_name), Role(name="query_insert", bucket=bucket_name), Role(name="query_delete", bucket=bucket_name), # Role required for idx creation on bucket Role(name="query_manage_index", bucket=bucket_name), ], password=pw) user_manager.upsert_user(user)
Listing Users
python
users_metadata = user_manager.get_all_users() for u in users_metadata: print("User's display name: {}".format(u.user.display_name)) roles = u.user.roles for r in roles: print( "\tUser has role {}, applicable to bucket {}".format( r.name, r.bucket))

Using a user created in the SDK to access data:

python
user_cluster = Cluster( "couchbase://your-ip", authenticator=PasswordAuthenticator(username, pw)) # For Server versions 6.5 or later you do not need to open a bucket here user_bucket = user_cluster.bucket(bucket_name) collection = user_bucket.default_collection() # create primary idx for testing purposes user_cluster.query_indexes().create_primary_index( bucket_name, CreatePrimaryQueryIndexOptions( ignore_if_exists=True)) # test k/v operations airline_10 = collection.get("airline_10") print("Airline 10: {}".format(airline_10.content_as[dict])) airline_11 = { "callsign": "MILE-AIR", "iata": "Q5", "id": 11, "name": "40-Mile Air", "type": "airline", } collection.upsert("airline_11", airline_11) # test query operations query_res = user_cluster.query("SELECT * FROM `travel-sample` LIMIT 5;") for row in query_res.rows(): print("Query row: {}".format(row))

Further Reading

The SDK also contains management APIs for dealing with Cluster resources.