Как вставить атрибут и значение «истина» для записи и значение «ложь» для остальных записей и записей в других таблицах?

У меня есть список таблиц class1, class2, class3... В каждой есть несколько записей, таких как отдел, студент, предметы и т. д.

В записях учащихся есть атрибуты USN, branch, age, DOB, phoneNo, isLeader, isPresident isLeader = true, если ученик является представителем класса isPresident = true, если студент является президентом студенческого союза

Если я вставлю isPresident = true для одного ученика из одного класса (таблицы), все записи учащихся должны быть ложными (даже из других классов, поскольку существует несколько классов, но президент студента уникален)

Как только я вставлю isLeader = true в одну запись, значения isLeader других таблиц/таблиц должны быть изменены на «false».

Я использую dynamoDB, лямбда-функцию с Python для кодирования.

Я переформулировал свои требования

Manohar A N 23.04.2024 05:15
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам придется сначала прочитать каждый элемент таблицы, а затем просмотреть результаты с помощью UpdateItem.

Для элементов, где это значение должно быть ложным, установите его так. А для элемента, который должен иметь значение true, установите его в значение true.

  1. Прочитайте все элементы с помощью сканирования
  2. Перебирать результаты
  3. В зависимости от элемента установите для атрибута значение true или false.

У меня есть такая идея, но я не знаю, как ее реализовать

Manohar A N 22.04.2024 12:00

Если вы не знаете, как его кодировать, вы можете получить примеры здесь: github.com/aws-samples/aws-dynamodb-examples/tree/master/…

Leeroy Hannigan 22.04.2024 14:00
Ответ принят как подходящий

Я решил эту проблему, используя client.list_tables() ниже приведен код:

import json
import boto3
from boto3 import resource

# Initialize the DynamoDB client
client = boto3.client('dynamodb')
resource = resource('dynamodb')

def lambda_handler(event, context):

    # Get a list of all table names
    response = client.list_tables()

    # String to search for
    # search_string = 'rest1'

    # List to store tables containing the search string
    matching_tables = []

    # Check each table name for the search string
    for table_name in response['TableNames']:

        if "rest1" in table_name:
            matching_tables.append(table_name)
            print("Aline23 matching_tables",matching_tables)

        
            #Updating rest1_localrest3
            if table_name == "rest1_localrest3":
                print("Aline35 table_name isDefault will be true: ",table_name)
                table = resource.Table(table_name)
                response = table.update_item(
                    Key = {'PK':'restindividual#restaccountinfo', 'SK': 'restaccountinfo'},
                    UpdateExpression = "SET isDefault = :s",
                    ExpressionAttributeValues = {':s' : True},
                    )                
            #Updating restaurants other than rest1_localrest3
            else:
                print("Aline35 table_name isDefault will be false: ",table_name)
                table = resource.Table(table_name)
                response = table.update_item(
                    Key = {'PK':'restindividual#restaccountinfo', 'SK': 'restaccountinfo'},
                    UpdateExpression = "SET isDefault = :s",
                    ExpressionAttributeValues = {':s' : False},
                    )            


    # Return the list of matching table names
    return {
        'body': json.dumps('Updated successfully')
    }

Другие вопросы по теме