powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python. Аналог ассоциативных массивов
2 сообщений из 2, страница 1 из 1
Python. Аналог ассоциативных массивов
    #39958961
VanDOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Выносим бизнес-логику из процедур БД ORACLE в Python-скрипты, есть вопрос.

В ORACLE у нас есть тип данных, по сути являющийся ассоциативным массивом, пример:
namevaluetypesourcedatetime city Moscowchar112.05.2020 23:25:24 user Ivanchar222.03.1988 02:56:41 summa 25000num201.12.2020 14:23:25 age 32num114.10.2018 10:23:45

То есть, есть набор переменных (в примере это city, user, summa, age) и N-ное количество (фиксированное количество с фиксированным типом данных) атрибутов каждой из этих переменных.
Данные хранятся в оперативной памяти, и доступ осуществляется по индексу name.

Доступ к атрибутам каждой из переменных осуществляется следующим образом:
Код: plsql
1.
2.
3.
4.
5.
type("city").value
type("city").type
type("city").source
type("city").datetime
и т.д.



Какой тип данных или конструкция в Python максимально подходит для решения этой задачи?

На текущий момент наиболее подходящим мне кажутся Словари (Dict) .
Единственное, классический словарь это пара ключ-значение, и в моем случае, когда значений N-ное количество, наверное нужен многомерный словарь.
То есть, мой пример будет выглядеть следующим образом:

Код: python
1.
2.
3.
4.
5.
Dict = {}
Dict["city"] = {"value":"Moscow", "type":"char", "source":1, "datetime":"12.05.2020 23:25:24"}
Dict["user"] = {"value":"Ivan", "type":"char", "source":2, "datetime":"22.03.1988 02:56:41"}
Dict["summa"] = {"value":"25000", "type":"num", "source":2, "datetime":"01.12.2020 14:23:25"}
Dict["age"] = {"value":"32", "type":"num", "source":1, "datetime":"14.10.2018 10:23:45"}



Структура будет иметь вид:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
{
    "city": {
        "value": "Moscow",
        "type": "char",
        "source": 1,
        "datetime": "12.05.2020 23:25:24"
    },
    "user": {
        "value": "Ivan",
        "type": "char",
        "source": 2,
        "datetime": "22.03.1988 02:56:41"
    },
    "summa": {
        "value": "25000",
        "type": "num",
        "source": 2,
        "datetime": "01.12.2020 14:23:25"
    },
    "age": {
        "value": "32",
        "type": "num",
        "source": 1,
        "datetime": "14.10.2018 10:23:45"
    }
}



Доступ к атрибуту переменной:
Код: python
1.
Dict["user"]["value"]



В правильном ли направлении я иду, и нет ли более подходящего для этих целей типа данных?
Из явных отличий которые я вижу, это то, что типы данных для атрибутов не фиксированы, а также набор атрибутов не фиксирован (по ошибке можно внести ерунду, в то время как сейчас это сделать не получится).
Также, работа с типом кажется более громоздкой

Буду благодарен за критические мнения
...
Рейтинг: 0 / 0
Python. Аналог ассоциативных массивов
    #39958969
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прежде, чем писать свой ORM, я бы советовала начать

с использования стандартног питоновского ORM, там все что вы хотите уже реализованно
стандартный питоновский ORM SQLAlchemy https://www.sqlalchemy.org/
в джанго свой встроенный ORM
все зависит от того, что и как вы собираетесь делать и что использовать

если стандартный ORM вам не подойдет, то вы получите представление о том как это уже реализовано,
и как это адаптировать под себя
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python. Аналог ассоциативных массивов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]