from unicodedata import normalize
def eq_nfc(str1, str2):
return normalize('NFC', str1) == normalize('NFC', str2)
...потому что везде акцент на то, как хранятся данные - структурированно в таблицах
...как уже сказал, везде акцент на таблицы, не на связиКак же так? Я вот отрыл вики, и там сразу акцент на связи (отношения), даже явно говорится, что делать акцент на таблицах - это неправильно:
Термин «реляционный» означает, что теория основана на математическом понятии отношение (relation). В качестве неформального синонима термину «отношение» часто встречается слово таблица. Необходимо помнить, что «таблица» есть понятие нестрогое и неформальное и часто означает не «отношение» как абстрактное понятие, а визуальное представление отношения на бумаге или экране. Некорректное и нестрогое использование термина «таблица» вместо термина «отношение» нередко приводит к недопониманию. Наиболее частая ошибка состоит в рассуждениях о том, что РМД имеет дело с «плоскими», или «двумерными» таблицами, тогда как таковыми могут быть только визуальные представления таблиц. Отношения же являются абстракциями и не могут быть ни «плоскими», ни «неплоскими».
Для лучшего понимания РМД следует отметить три важных обстоятельства:
- модель является логической, то есть отношения являются логическими (абстрактными), а не физическими (хранимыми) структурами;
- для реляционных баз данных верен информационный принцип: всё информационное наполнение базы данных представлено одним и только одним способом, а именно — явным заданием значений атрибутов в кортежах отношений; в частности, нет никаких указателей (адресов), связывающих одно значение с другим;
- наличие реляционной алгебры позволяет реализовать декларативное программирование и декларативное описание ограничений целостности, в дополнение к навигационному (процедурному) программированию и процедурной проверке условий.
и где обычно это все указывается?В Linux есть справочный файл
/etc/services
, в котором перечислены порты tcp/udp, по умолчанию назначенные (но не привязанные намертво) различным протоколам прикладного уровня.C:\Windows\System32\drivers\etc\services
. в гугле не могу найти определения этих 3 понятий,
насколько я понял, токен и работа с апи в телеграм доступны только ботам
возможно ли от имени бота написать сообщение не в канал, не в лс пользователю, а другому боту
INSTEAD OF DELETE ON all_abonents
CREATE USER user_name PASSWORD (SELECT random_string((SELECT random_int_between(5,15))));
Non-optimizable SQL commands (also called utility commands) are not capable of accepting query parameters. So automatic substitution of PL/pgSQL variables does not work in such commands. To include non-constant text in a utility command executed from PL/pgSQL, you must build the utility command as a string and then EXECUTE it, as discussed in Section 43.5.4.
SELECT random_string(SELECT random_int_between(5,15)) INTO pass;
EXECUTE format('CREATE USER %I PASSWORD %L', user_name, pass);
EXECUTE format('GRANT %I TO %I', role_name, user_name);
import requests
url = 'https://gitlab.com/api/v4/projects/123/repository/commits'
data = {"branch": "main", "commit_message": "create", "actions": [{"action": "create", "file_path": "1.json", "content": "test"}]}
headers={'PRIVATE-TOKEN': 'token'}
res = requests.post(url, headers=headers, json=data)
SELECT
orugie, sum_cena_orugie, pos, sum_cena_pos
FROM (
SELECT row_number() over (order by id_orugie_p) orugie_rn, id_orugie_p orugie, SUM(cena) sum_cena_orugie
FROM test
GROUP BY id_orugie_p
) t_orugie
FULL JOIN (
SELECT row_number() over (order by id_pos_p) pos_rn, id_pos_p pos, SUM(cena) sum_cena_pos
FROM test
GROUP BY id_pos_p
) t_pos on orugie_rn = pos_rn;