Архив автора: admin

ONLYOFFICE 7.2 включает в себя улучшения форм, интерфейса и многое другое

Менеджер плагинов OnlyOffice 7.2

OnlyOffice — это пакет, который подходит как для облачной, так и для настольной установки, предлагая чрезвычайно универсальную платформу.

Недавно анонсирован выход новой версии OnlyOffice 7.2, который уже доступен и поставляется с улучшениями в спецификации полей ввода данных в формах. Электронные таблицы можно вставлять в другие документы как объекты OLE, что означает, что они остаются активными и могут редактироваться и обновляться.

Пользовательский интерфейс пакета теперь может отображаться на португальском, традиционном китайском, баскском, малайском и армянском языках, а также на есть обновленный менеджер плагинов.



Читать

За какие долги лишают водительских прав — кого не касается и как избежать

Узнали, что в отношении вас действует запрет на управление авто, но не понимаете, как так вышло. В статье расскажу, за что могут вменить водителю лишение водительских прав за долги, на какой срок и какие действия следует предпринять для прекращения временного лишения.

Текст написан на основе статьи kulikavto.ru: За какие долги лишают водительских прав в этом году

Что понимают под ограничением

Наличие определенного вида долга может повлечь ограничение

Под ограничением спецправа понимают временное приостановление его действия до полного погашения должником своих обязательств перед должником в рамках возбужденного исполнительного производства. При этом специальное право предполагает управление не только авто, но и:

  • Воздушным судном.

  • Судном морского/внутреннего водного транспорта.

  • Мотоциклом/мопедом.

  • Трициклом/квадроциклом.

  • Самоходной машиной.

Сама по себе такая мера воздействия не является видом ответственности водителя за совершение им какого-либо административного правонарушения и лишь преследует цель мотивировать должника погасить имеющуюся у него задолженность перед взыскателем.

Применить такую меру воздействия могут сотрудники ФССП в рамках исполнительного производства если есть непогашенная задолженность. При этом, само водительское удостоверение (далее — ВУ) у водителя не изымается, но и управлять авто в период действия такого ограничения он не вправе.

Если же все-таки водитель решится нарушить такой запрет и данный факт зафиксируют, его уже ожидает административная ответственность вплоть до реального лишения прав — ст. 17.17 КоАП РФ.

Какими законами предусмотрено

Нормативно-правовая база, регламентирующая применение меры в виде ограничения действия ВУ включает в себя:

  1. № 340-ФЗ — первичный НПА, наделивший судебных приставов правом ограничивать действие водительских прав.

  2. № 229-ФЗ — данный закон был дополнен ст. 67.1, а также внесены изменения в иные статьи этого закона.

  3. КоАП РФ — дополнен ст. 17.17, предусматривающей ответственность водителя за обхождение запрета на езду.

  4. № 196-ФЗ.

 

Каковы нюансы применения данной меры

Алгоритм временного ограничения действия водительских прав имеет следующие нюансы, а именно наличие:

  1. Действующего исполнительного производства, не завершенного к моменту оказания такого воздействия на должника.

  2. Судебного акта, которым установлено обязанность лица погасить задолженность — если основанием возбуждения исполнительного производства послужил иной документ (например, алиментное соглашение), сотрудник ФССП не вправе применить меру, ограничивающую специальные права должника. Это возможно только путем обращения пристава в суд.

  3. Информации в деле ФССП об уведомлении должника о возбуждении производства (исключение — объявление его в розыск).

  4. Сведений в постановлении о возможном применении к должнику ограничения пользования транспортным средством (далее — ТС) при невыполнении им требований, прописанных в исполнительном листе/судебном приказе.

  5. Факта уклонения гражданина добровольно исполнить обязательство — для этого ему представляется соответствующий срок, и только при его нарушении, пристав вправе применить запрет управления средством.

  6. Предусмотренного законом вида задолженности (расскажу об этом подробнее далее).

  7. Задолженности более 10 тыс. руб. — при размере долга менее указанной суммы, ограничение спецправа не применяется. Однако пристав вправе суммировать долги по имеющимся возбужденным в отношении должника производствам. Если при этом итоговая сумма окажется более 10 тыс. руб., действие водительских прав могут приостановить.

Обратите внимание, такие меры не должно ущемлять права водителя/членов его семьи (далее расскажу об этом более детально).

Нарушение сотрудником ФССП хотя бы одного из вышеперечисленных условий, влечет признание его действий по применению к должнику временного лишения прав незаконными.

Важно! Если у водителя отсутствуют преграды для погашения задолженности, вполне вероятно применение к нему данной меры. При наличии у него обстоятельств непреодолимой силы, мешающих исполнить требование, он должен уведомить об этом пристава. Иначе риск наступления неблагоприятных последствий несет гражданин.

За что могут «заморозить» права

С применением такой меры воздействия могут столкнуться граждане и ИП, не исполняющие без веских причин свои долговые обязательства, вытекающие из требований о:

  • Взыскании алиментов/административного штрафа, связанного с нарушением порядка пользования спецправом (к примеру, за нарушение ПДД).

  • Возмещении вреда, причиненного здоровью/в связи со смертью кормильца.

  • Уплате имущественного ущерба/морального вреда, причиненных преступлением.

  • Неимущественного характера, сопряженных с воспитанием детей.

Если требования иного характера, приостановить действие водительского удостоверения судебный пристав не вправе.

К кому нельзя применить ограничение спецправа

За какие долги лишают водительских прав — кого не касается и как избежать

Закон запрещает применение такой меры к определенным категориям граждан

Временное приостановление действия ВУ не применяется к гражданам:

  • Имеющим сумму долга менее 10 тыс. руб.

  • Для которых управление ТС это единственный источник заработка — при этом такая деятельность должна быть законной и основной для должника. Если гражданин имеет профессию водитель, но по специальности не трудится, ему можно временно приостановить действие ВУ.

  • Проживающим в отдаленной местности с ограниченной транспортной доступностью — это определяется временем нахождения должника в пути до ближайшего поселения, и оно занимает больше 10 часов. Как таковое удаление места работы от проживания должника не является препятствием для применения ограничения спецправа.

  • Инвалидам либо имеющим на иждивении инвалида I-II группы/ребенка-инвалида — при этом выделение авто должно производится по медицинским показаниям/подтверждаться соответствующими документами, а само ТС является единственно доступным средством перемещения. Что касается иждивенства, данный факт должен устанавливаться судом и подтверждаться выданными госорганами документами.

  • Получившим рассрочку/отсрочку исполнения обязательства в судебном порядке — должник должен уведомить о данном факте судебного пристава.

Должникам, не вошедшим в вышеуказанный перечень, судебные приставы могут «обездвижить» удостоверение самостоятельно либо по заявлению взыскателя.

Каков алгоритм установления приставами ограничения прав за долги

Реализация приставами данной меры является одним из исполнительных действий и соответственно требует соблюдения определенной процедуры. Рассмотрим ее более подробно:

  1. Возбуждение исполнительного производства — на основании исполнительного документа пристав выносит соответствующее постановление, в котором указывает срок добровольного погашения долга и оговорку, что при его непогашении должник может быть временно ограничен в управлении ТС.

  2. Получение информации об имуществе должника — путем получения сведений от взыскателя/должника/госорганов (с помощью направления соответствующих запросов). Если в результате таких действий выяснится, что должник имеет ВУ, его действие приостановят.

  3. Вынесение приставом постановления о применении к должнику ограничительной меры и его ознакомление с ним лично, путем совершения гражданином надписи об ознакомлении на документе/направления его почтой по известному адресу должника/уведомления на портале Госуслуг, если последний зарегистрирован в сервисе и может получать соответствующие сообщения.

  4. Уведомление взыскателя/госорганов о применении к должнику меры воздействия.

  5. Направление приставом сведений о должнике в соответствующие контролирующие органы в течение 1 дня с момента вынесения постановления — ГИБДД/Гостехнадзор/ГИМС.

  6. Исполнение постановления — с момента уведомления неплательщика о применении к нему данной меры он не вправе управлять каким-либо ТС. При нарушении такого запрета наступает уже административная ответственность. В отношении правонарушителя сотрудниками ГИБДД/Гостехнадзора/ГИМС составляется административный протокол, после чего материалы передаются в суд, где ему избирается мера наказания.

Важно! Уведомление может быть вручено как должнику, так и любому совершеннолетнему члену его семьи (если он не возражает). Такие действия также свидетельствуют о надлежащем извещении должника.

Что будет за нарушение запрета управления авто

Если вопреки имеющимся временным ограничениям спецправа водитель сядет за руль и будет пойман, его ждет одна из санкций:

  • Обязательные работы до 50 часов — такое наказание применяется к совершившим данное правонарушение впервые и не применяется к женщинам в положении/имеющим детей до 3-х лет/инвалидам 1-2 групп/военным и лицам на спецслужбе.

  • Лишение прав до 1 года — при этом ВУ у водителя изымается.

 

Как избежать временного ограничения права за долги

За какие долги лишают водительских прав — кого не касается и как избежать

Проанализируйте свою ситуацию на предмет оснований, позволяющих избежать ограничения прав

Само по себе наличие исполнительного производства не означает, что в отношении вас пристав применит такую меру. Однако риск есть и для его минимизации придерживайтесь следующих положений:

  • Не накапливайте долг свыше 10000 руб. — если все-таки размер долга превысил такой порог, оплатите часть задолженности, чтобы она стала менее 10 тыс. руб.

  • Обратитесь в суд за отсрочкой/рассрочкой уплаты задолженности, если пока не можете погасить долг — приложите к заявлению подтверждающие документы, например, медицинскую справку/справку о доходах и пр.

  • Ставьте в известность пристава о наличии обстоятельств, исключающих применение к вам данной меры воздействия.

  • В моменте реагируйте на незаконные действия судебного пристава по ограничению вас в правах, путем подачи жалобы в вышестоящие органы/прокуратуру/суд.

 

Каковы основания прекращения приостановления действия ВУ

Итак, основаниями для прекращения наложенного судебным приставом запрета управления средством являются:

  1. Изменение жизненных обстоятельств у должника — поступление на работу, связанную с управлением ТС/получение инвалидности и невозможность самостоятельно передвигаться без транспорта/переезд в местность с ограниченной транспортной доступностью. Об этом следует уведомить пристава и предъявить ему соответствующую документацию, подтверждающую такое событие.

  2. Обжалование действий пристава — применение в отношении должника вышеуказанной меры при наличии препятствующих этому условий можно оспорить путем подачи жалобы в вышестоящий подведомственный орган/прокуратуру/суд. Если судебный акт принят не в вашу пользу, его также можно обжаловать путем подачи апелляционной жалобы.

  3. Закрытие долга перед взыскателем.

 

При каких обстоятельствах можно отменить постановление пристава

По заявлению должника суд может отменить постановление с ограничительной мерой, если:

  • У гражданина имеются веские причины для неуплаты в срок и об этом судебный пристав был проинформирован, однако вопреки этому совершил данное исполнительное действие.

  • Сотрудник ФССП не принял во внимание обязательные условия для применения ограничения права — к примеру, вынес постановление при сумме задолженности менее 10 тыс. руб. или по требованию об уплате кредита, в том время, как перечень требований расширенному толкованию не подлежит.

  • Должник не извещен надлежащим образом о применении к нему такой меры воздействия, только если он не находится в розыске.

 

В чем отличие ограничительных мер от лишения ВУ

За какие долги лишают водительских прав — кого не касается и как избежать

Ограничение спецправ и лишение — это разные процедуры

Давайте разберем в чем конкретно заключается их отличие:

  1. Нормативная база, регламентирующая эти процедуры — лишение прав предусмотрено КоАП РФ/УК РФ, а ограничение № 229-ФЗ.

  2. Орган, устанавливающий запрет на управление — лишить ВУ может только суд, приостановить действие прав вправе пристав и в некоторых случаях суд.

  3. Лицо, к которому применяется мера — лишается прав водитель за нарушение ПДД, ограничение же является стимулирующей мерой для того, чтобы должник погасил долг.

  4. Срок действия — лишение длится определенный период, установленный судом, приостановление прав действует до погашения долга.

  5. Местонахождение ВУ — при лишении его необходимо сдать в ГИБДД, при ограничении документ остается на руках у водителя.

  6. Исполнение — течение срока лишения начинается после его сдачи в Госавтоинспекцию, ограничение с момента уведомления должника о такой процедуре.

  7. Действия необходимые для прекращения запрета — по истечении срока лишения ВУ водителю нужно сдать экзамен/оплатить штрафы и в некоторых случаях пройти медкомиссию. Для отмены ограничения достаточно погасить имеющуюся задолженность.

 

В чем сходство

Несмотря на существенные различия данные меры воздействия имеют и общее:

  • Табу на управление средством на период действия запрета.

  • Возможность обжаловать применение к гражданину одной из санкций.

  • Единый контролирующий государственный орган – Госавтоинспекция, которая следит за исполнением вынесенных актов.

  • Составление административного протокола, если водитель попадется за управлением ТС в период запрета. Такой документ передается в суд для избрания наказания.

 

Частые вопросы

В: Можно ли осуществить замену прав, если их действие приостановлено приставом?

О: Поскольку ограничение касается непосредственно управления авто, а не документа, совершать действия по его замене законодательством не запрещено. Однако, если погашать задолженность в ближайшее время вы не планируете, целесообразность замены невелика — поскольку срок будет идти, а сесть за руль вы все равно не сможете.

В: Как отменить временное ограничение права?

О: Для отмены приставом такой меры воздействия должнику необходимо погасить имеющуюся задолженность. После чего, в течение суток пристав должен снять временное ограничение и направить в ГИБДД соответствующие сведения. Однако на практике это может занять больше времени, поскольку «человеческий» фактор никто не отменял.

В: Могут ли временно лишить прав за долги по кредиту?

О: Нельзя. Судебный пристав вправе приостановить действие специального права только за неисполнение должником определенного рода требований, рассмотренных нами в статье ранее. Долги по кредиту в данный перечень не входят.

В: Требуется ли сдача экзамена после отмены запрета на управление средством?

О: Не требуется. Сдача экзамена обязательна только для водителей, лишенных водительских прав.

В: Что будет, если при ограничении спецправа водитель повторно попадется за управлением авто вопреки наложенному запрету?

О: Такой критерий как повторность не применяется при ограничении спецправ, поскольку данная мера не является видом ответственности и не имеет определенного срока. Только от должника будет зависеть длительность ее применения. Однако, если водитель попадется повторно сотруднику Госавтоинспекции, должник в соответствии со ст. 17.17 КоАП РФ может быть лишен ВУ по решению суда.

В: Изымается ли водительское удостоверение у должника на период действия ограничения?

О: Бытует мнение, что водительские права на период временного лишения долги подлежат сдаче на хранение в службу ФССП. Однако это не так. Действующее законодательство не предусматривает такой обязанности для водителей-должников. Такой документ остается на руках неплательщика, но использовать его нельзя.

Шпаргалка

  1. Не существует временного лишения ВУ за долги — при наличии оснований и соблюдении определенных условий ФССП использует в отношении должника ограничение специального права.

  2. Применить такую меру воздействия возможно не только в отношении автотранспорта, но и других его видов.

  3. Действие данного ограничения направлено на побуждение гражданина к погашению задолженности.

  4. Контроль за исполнением постановления пристава о применении ограничения возложен на ГИБДД/ГИМС и Гостехнадзор. При выявлении нарушения запрета должник привлекается к административной ответственности по ст. 17.17 КоАП РФ.

  5. Для снятия данного ограничения гражданину достаточно просто погасить долг — в этом случае пристав вынесет постановление об отмене данной меры.

А вас временно ограничивали в праве управления ТС? Как быстро решили вопрос отмены данной меры?



2022-09-25T15:55:37
Безопасность

Python SQLite — учебное пособие на русском языке

Учебное пособие по программированию на Python для базы данных SQLite.

Оглавление

SQLite

SQLite – это встроенный движок реляционной базы данных. В документации это называется автономным, бессерверным, с нулевой конфигурацией и транзакционным ядром базы данных SQL. Он очень популярен и сегодня используется сотнями миллионов копий по всему миру. Несколько языков программирования имеют встроенную поддержку SQLite, включая Python и PHP.

Установка SQLite

sudo apt install sqlite3

Запускаем модуль sqlite3 и консоль пригласит для работы с базой данных:
sqlite>
Список команд для работы с базой данных sqlite> .help

Создание базы данных SQLite

Вся база данных SQLite хранится в обычном файле. Используем команду .open dbname.db. Если база не существует — она будет создана, если существует — будет открыта.

sqlite> .open ydb.db

Python SQLite — как подключаться к базе и отправлять запросы

Для примера получим версию базы данных SQLite.

В первом скрипте рассмотрим работу с базой данных классическим способом: откроем базу – выполним запрос – закроем базу и освободим ресурсы.

#!/usr/bin/python

import sqlite3
import sys

con = None

try:
    con = sqlite3.connect('ydb.db')

    cur = con.cursor()
    cur.execute('SELECT SQLITE_VERSION()')

    data = cur.fetchone()[0]

    print(f"SQLite version: {data}")

except sqlite3.Error as e:

    print(f"Error {e.args[0]}")
    sys.exit(1)

finally:

    if con:
        con.close()
SQLite version: 3.31.1

Рассмотрим код подробнее:

import sqlite3

Импортируем библиотеку sqlite3.

con = None

Объявляем переменную con значением None. Если мы не сможем соединиться с базой данных (например, диск переполнен), а у нас не была бы определена переменная соединения — это приведёт к ошибке в блоке finally.

con = sqlite3.connect('ydb.db')

Подключаемся к базе данных ydb.db. Метод connect возвращает объект соединения.

cur = con.cursor()
cur.execute('SELECT SQLITE_VERSION()')

Из соединения мы получаем объект курсора. Курсор используется для обхода записей из полученных результатов. Мы вызываем метод курсора execute и выполняем SQL-запрос.

data = cur.fetchone()[0]

Поскольку мы получаем только одну запись, мы вызываем метод fetchone.

print(f"SQLite version: {data}")

Полученные данные выводим в консоль.

except sqlite3.Error as e:

    print(f"Error {e.args[0]}")
    sys.exit(1)

В случае ошибки получаем исключение — выводим сообщение об ошибке и выходим из скрипта с кодом ошибки 1.

finally:

    if con:
        con.close()

con.close() закрывает работу с базой данных и освобождаем ресурсы.

Во втором примере мы снова получаем версию базы данных SQLite. На этот раз мы используем контекстный менеджер with.

#!/usr/bin/python

import sqlite3

with sqlite3.connect('ydb.db') as con:

    cur = con.cursor()
    cur.execute('SELECT SQLITE_VERSION()')

    data = cur.fetchone()[0]

    print(f"SQLite version: {data}")

Код выглядит компактнее, читается проще.

Python SQLite — метод execute

Создадим таблицу cars и вставим в нее несколько строк. Для добавления данных используем команду execute.

import sqlite3


with sqlite3.connect('ydb.db') as con:

    cur = con.cursor()

    cur.execute("DROP TABLE IF EXISTS cars;")
    cur.execute("CREATE TABLE cars(id INT, name TEXT, price INT)")
    cur.execute("INSERT INTO cars VALUES(1,'Audi',52642)")
    cur.execute("INSERT INTO cars VALUES(2,'Mercedes',57127)")
    cur.execute("INSERT INTO cars VALUES(3,'Skoda',9000)")
    cur.execute("INSERT INTO cars VALUES(4,'Volvo',29000)")
    cur.execute("INSERT INTO cars VALUES(5,'Bentley',350000)")
    cur.execute("INSERT INTO cars VALUES(6,'Citroen',21000)")
    cur.execute("INSERT INTO cars VALUES(7,'Hummer',41400)")
    cur.execute("INSERT INTO cars VALUES(8,'Volkswagen',21600)")

Рассмотрим подробнее:

cur.execute("DROP TABLE IF EXISTS cars;")

Удаляем таблицу, если она уже существует.

cur.execute("CREATE TABLE cars(id INT, name TEXT, price INT)")

Создаём новую таблицу cars с тремя столбцами: id, name, price.

cur.execute("INSERT INTO cars VALUES(1,'Audi',52642)")
cur.execute("INSERT INTO cars VALUES(2,'Mercedes',57127)")

Эти две строки вставляют в таблицу два автомобиля. Благодаря использованию контекстного менеджера with изменения фиксируются автоматически. В противном случае нам пришлось бы фиксировать их вручную.

sqlite> .mode column
sqlite> .headers on

Выведем записанные данные в консоль с помощью модуля sqlite3. Изменим способ отображения данных в консоли — используем режим столбцов и отобразим заголовки.

sqlite> select * from cars;
id          name        price
----------  ----------  ----------
1           Audi        52642
2           Mercedes    57127
3           Skoda       9000
4           Volvo       29000
5           Bentley     350000
6           Citroen     21000
7           Hummer      41400
8           Volkswagen  21600

Python SQLite — метод executemany

Создадим ту же таблицу, но уже с помощью более быстрого метода executemany. С помощью executemany можно вставлять сразу несколько записей.

Python SQLite — executemany INSERT

import sqlite3


cars = (
    (1, 'Audi', 52642),
    (2, 'Mercedes', 57127),
    (3, 'Skoda', 9000),
    (4, 'Volvo', 29000),
    (5, 'Bentley', 350000),
    (6, 'Hummer', 41400),
    (7, 'Volkswagen', 21600)
)

with sqlite3.connect('ydb.db') as con:

    cur = con.cursor()

    cur.execute("DROP TABLE IF EXISTS cars")
    cur.execute("CREATE TABLE cars(id INT, name TEXT, price INT)")
    cur.executemany("INSERT INTO cars VALUES(?, ?, ?)", cars)

Вставляем сразу восемь строк в таблицу.

cur.executemany("INSERT INTO cars VALUES(?, ?, ?)", cars)

Первый параметр — запрос SQL, второй параметр — кортеж кортежей.

Python SQLite — executemany SELECT

Метод executemany используется только для вставки данных. Иногда ошибочно пытаются получить данные по фильтру из списка значений с помощью executemany. Но для этого используется метод execute с подстановкой значений.

cur.execute('SELECT * FROM cars WHERE name in ({0})'.format(', '.join('?' for _ in names)), names)

Python SQLite — метод executescript

Рассмотрим способ создания таблицы автомобилей с помощью executescript. Будем фиксировать изменения вручную и добавим собственную обработку ошибок.

import sqlite3
import sys

con = None

try:
    con = sqlite3.connect('ydb.db')

    cur = con.cursor()

    cur.executescript("""
        DROP TABLE IF EXISTS cars;
        CREATE TABLE cars(id INT, name TEXT, price INT);
        INSERT INTO cars VALUES(1,'Audi',52642);
        INSERT INTO cars VALUES(2,'Mercedes',57127);
        INSERT INTO cars VALUES(3,'Skoda',9000);
        INSERT INTO cars VALUES(4,'Volvo',29000);
        INSERT INTO cars VALUES(5,'Bentley',350000);
        INSERT INTO cars VALUES(6,'Citroen',21000);
        INSERT INTO cars VALUES(7,'Hummer',41400);
        INSERT INTO cars VALUES(8,'Volkswagen',21600);
        """)

    con.commit()

except sqlite3.Error as e:

    if con:
        con.rollback()

    print(f"Error {e.args[0]}")
    sys.exit(1)

finally:

    if con:
        con.close()

executescript позволяет выполнять сразу несколько сриптов в одном запросе.

con.commit()

Без контекстного менеджера with изменения должны быть зафиксированы с помощью метода commit.

except sqlite.Error as e:

    if con:
        con.rollback()

    print(f"Error {e.args[0]}")
    sys.exit(1)

В случае ошибки изменения откатываются con.rollback(), а на терминал выводится сообщение об ошибке.

Python SQLite — метод lastrowid

Иногда требуется получить id последней строки таблицы в базе данных. В Python SQLite используем атрибут lastrowid объекта курсора.

import sqlite3

with sqlite3.connect(':memory:') as con:

    cur = con.cursor()
    cur.execute("CREATE TABLE friends(id INTEGER PRIMARY KEY, name TEXT);")
    cur.execute("INSERT INTO friends(name) VALUES ('Tom');")
    cur.execute("INSERT INTO friends(name) VALUES ('Rebecca');")
    cur.execute("INSERT INTO friends(name) VALUES ('Jim');")
    cur.execute("INSERT INTO friends(name) VALUES ('Robert');")

    last_row_id = cur.lastrowid

    print(f"The last Id of the inserted row is {last_row_id}")

:memory: — база данных, которая создаётся временно.

Python SQLite — получение данных с помощью fetchall

Метод fetchall извлекает все (или все оставшиеся) строки из набора результатов запроса и возвращает список кортежей.

import sqlite3


with sqlite3.connect('ydb.db') as con:

    cur = con.cursor()
    cur.execute("SELECT * FROM cars")

    rows = cur.fetchall()

    for row in rows:
        print(f"{row[0]} {row[1]} {row[2]}")

Python SQLite — метод fetchone

Метод fetchone возвращает следующую строку полученных результатов. Возвращает один кортеж или None, когда больше нет доступных данных.

import sqlite3

con = sqlite3.connect('ydb.db')

with con:

    cur = con.cursor()
    cur.execute("SELECT * FROM cars")

    while True:

        row = cur.fetchone()

        if row == None:
            break

        print(f"{row[0]} {row[1]} {row[2]}")

Python SQLite — row_factory

По умолчанию курсор возвращает данные в виде кортежа кортежей. Когда мы используем row_factory, данные передаются в виде словарей Python. Таким образом, мы можем ссылаться на данные по именам столбцов.

import sqlite3

con = sqlite3.connect('ydb.db')

with con:

    con.row_factory = sqlite3.Row

    cur = con.cursor()
    cur.execute("SELECT * FROM cars")

    rows = cur.fetchall()

    for row in rows:
        print(f"{row['id']} {row['name']} {row['price']}")

Python SQLite — как проверить, существует ли база данных

Невозможно проверить, существует ли файл базы данных с помощью метода connect. Метод просто подключается к базе данных, если файл существует. Если файл не существует, файл базы данных создается. Существование файла базы данных можно проверить с помощью стандартной функции os.path.exist.

import os
import sqlite3


if not os.path.exists('ydb.db'):

    con = sqlite3.connect('ydb.db')

    with con:

        cur = con.cursor()
        cur.execute("DROP TABLE IF EXISTS cars")
        cur.execute("CREATE TABLE cars(id INT, name TEXT, price INT)")
        cur.execute("INSERT INTO cars VALUES(1,'Audi', 52642)")
        cur.execute("INSERT INTO cars VALUES(2,'Mercedes', 57127)")
        cur.execute("INSERT INTO cars VALUES(3,'Skoda',9000)")
        cur.execute("INSERT INTO cars VALUES(4,'Volvo',29000)")
        cur.execute("INSERT INTO cars VALUES(5,'Bentley', 350000)")
        cur.execute("INSERT INTO cars VALUES(6,'Citroen',21000)")
        cur.execute("INSERT INTO cars VALUES(7,'Hummer',41400)")
        cur.execute("INSERT INTO cars VALUES(8,'Volkswagen', 21600)")

else:

    with sqlite3.connect('ydb.db') as con:

        cur = con.cursor()
        cur.execute("SELECT * FROM cars")
        rows = cur.fetchmany(2)

        print(rows)

В этом скрипте мы проверяем, существует ли файл ydb.db. Если файл не существует, он создается и генерируется новая таблица. Если база данных уже существует, мы извлекаем две строки из таблицы.

if not os.path.exists('test.db'):

  con = sqlite3.connect('test.db')
  ...

Python SQLite — подстановка значений в SQL-запрос

Когда мы подставляем значения в запросы, мы используем заполнители вместо того, чтобы напрямую записывать значения. Такие запросы называются параметризованными. Параметризованные запросы повышают безопасность и производительность.

Модуль Python sqlite3 поддерживает два типа заполнителей: вопросительные знаки и именованные параметры.

Подстановка значений с помощью вопросительных знаков

import sqlite3

uId = 1
uPrice = 62300

con = sqlite3.connect('ydb.db')

with con:

    cur = con.cursor()
    cur.execute("UPDATE cars SET price=? WHERE id=?", (uPrice, uId))

    print(f"Number of rows updated: {cur.rowcount}")

Метод rowcount возвращает количество обновленных строк.

Подстановка значений с помощью именованных параметров

import sqlite3

uId = 4

con = sqlite3.connect('ydb.db')

with con:

    cur = con.cursor()
    cur.execute("SELECT name, price FROM cars WHERE Id=:Id", {"Id": uId})

    row = cur.fetchone()
    print(f"{row[0]}, {row[1]}")

Python SQLite — хранение изображений в базе данных

Вставка изображений

Рассмотрим хранение изображений в базе данных SQLite. Конечно, сохранять изображения в базе данных нецелесообразно.  Общая практика состоит в том, чтобы хранить изображения в каталогах файловой системы и хранить ссылки на изображения в базе данных. Но мы рассмотрим этот приём для общего понимания возможностей SQLite.

sqlite> CREATE TABLE images(id INTEGER PRIMARY KEY, data BLOB);

Для этого примера создаем новую таблицу под названием images. Для изображений используем тип данных BLOB (англ. Binary Large Object — двоичный большой объект) — массив двоичных данных.

import sqlite3
import sys

def readImage():

    fin = None

    try:
        fin = open("sid.jpg", "rb")
        img = fin.read()
        return img

    except IOError as e:

        print(e)
        sys.exit(1)

    finally:

        if fin:
            fin.close()

con = None

try:
    con = sqlite3.connect('ydb.db')

    cur = con.cursor()

    data = readImage()
    binary = sqlite3.Binary(data)
    cur.execute("INSERT INTO images(data) VALUES (?)", (binary,) )

    con.commit()

except sqlite3.Error as e:

    if con:
        con.rollback()

    print(e)
    sys.exit(1)

finally:

    if con:
        con.close()

Рассмотрим скрипт подробнее:

Открываем и считываем изображения из каталога в базе данных.

try:
    fin = open("sid.jpg", "rb")
    img = fin.read()
    return img

Мы считываем двоичные данные из файловой системы. У нас есть изображение в формате JPG, называемое sid.jpg.

binary = sqlite3.Binary(data)

Данные кодируются с использованием двоичного объекта SQLite.

cur.execute("INSERT INTO images(data) VALUES (?)", (binary,) )

Получение изображений

Выполним обратную операцию: получим изображение из таблицы базы данных.

import sqlite3
import sys


def writeImage(data):

    fout = None

    try:
        fout = open('sid2.jpg','wb')
        fout.write(data)

    except IOError as e:

        print(e)
        sys.exit(1)

    finally:

        if fout:
            fout.close()

con = None

try:
    con = sqlite3.connect('ydb.db')

    cur = con.cursor()
    cur.execute("SELECT data FROM images LIMIT 1")
    data = cur.fetchone()[0]

    writeImage(data)


except sqlite3.Error as e:

    print(e)
    sys.exit(1)

finally:

    if con:
        con.close()

Python SQLite — метаданные таблиц

Метаданные – это информация о данных в базе данных. Метаданные в SQLite содержат информацию о таблицах и столбцах, в которых мы храним данные.

Метаданные в SQLite можно получить с помощью команды PRAGMA. Объекты SQLite могут иметь атрибуты, которые являются метаданными. Наконец, мы также можем получить конкретные метатеги, запросив таблицу sqlite_master системы SQLite.

import sqlite3

con = sqlite3.connect('ydb.db')

with con:

    cur = con.cursor()

    cur.execute('PRAGMA table_info(cars)')

    data = cur.fetchall()

    for d in data:
        print(f"{d[0]} {d[1]} {d[2]}")

В этом примере мы выполняем команду PRAGMA table_info(имя_таблицы), чтобы получить некоторую информацию о метаданных нашей таблицы cars.

ur.execute('PRAGMA table_info(cars)')

Команда PRAGMA table_info(имя_таблицы) возвращает по одной строке для каждого столбца в таблице cars. Столбцы в результирующем наборе включают порядковый номер столбца, имя столбца, тип данных, может ли столбец быть нулевым или нет, и значение по умолчанию для столбца.

for d in data:
    print(f"{d[0]} {d[1]} {d[2]}")

В следующем примере выведем все строки из таблицы cars с именами их столбцов.

import sqlite3

con = sqlite3.connect('ydb.db')

with con:

    cur = con.cursor()
    cur.execute('SELECT * FROM cars')

    col_names = [cn[0] for cn in cur.description]

    rows = cur.fetchall()

    print(f"{col_names[0]:3} {col_names[1]:10} {col_names[2]:7}")

    for row in rows:
        print(f"{row[0]:<3} {row[1]:<10} {row[2]:7}")

Мы выводим содержимое таблицы cars на консоль. Теперь мы также включаем названия столбцов. Записи выровнены по именам столбцов.

col_names = [cn[0] for cn in cur.description]

Получаем имена столбцов из свойства description объекта cursor.

print(f"{col_names[0]:3} {col_names[1]:10} {col_names[2]:7}")

В этой строке выводятся названия трех столбцов таблицы cars.

for row in rows:
    print(f"{row[0]:<3} {row[1]:<10} {row[2]:7}")

Печатаем строки с помощью цикла for. Данные выровнены по именам столбцов.

id  name       price
1   Audi         62300
2   Mercedes     57127
3   Skoda         9000
4   Volvo        29000
5   Bentley     350000
6   Hummer       41400
7   Volkswagen   21600

В последнем примере перечислим все таблицы в базе данных ydb.db.

import sqlite3

con = sqlite3.connect('ydb.db')

with con:

    cur = con.cursor()
    cur.execute("SELECT name FROM sqlite_master WHERE type='table'")

    rows = cur.fetchall()

    for row in rows:
        print(row[0])

Пример кода выводит на терминал все доступные таблицы в текущей базе данных.

cur.execute("SELECT name FROM sqlite_master WHERE type='table'")

Имена таблиц хранятся внутри системной таблицы sqlite_master.

cars
images

Python SQLite — экспорт данных

Создадим резервную копию таблиц нашей базы данных.

import sqlite3

cars = (
    (1, 'Audi', 52643),
    (2, 'Mercedes', 57642),
    (3, 'Skoda', 9000),
    (4, 'Volvo', 29000),
    (5, 'Bentley', 350000),
    (6, 'Hummer', 41400),
    (7, 'Volkswagen', 21600)
)

def writeData(data):

    f = open('cars.sql', 'w')

    with f:
        f.write(data)


con = sqlite3.connect(':memory:')

with con:

    cur = con.cursor()

    cur.execute("DROP TABLE IF EXISTS cars")
    cur.execute("CREATE TABLE cars(id INT, name TEXT, price INT)")
    cur.executemany("INSERT INTO cars VALUES(?, ?, ?)", cars)
    cur.execute("DELETE FROM cars WHERE price < 30000")

    data = 'n'.join(con.iterdump())

    writeData(data)

В этом примере воссоздаем таблицу cars в временной базе данных. Удаляем некоторые строки из таблицы и сохраняем текущее состояние таблицы в файл cars.sql. Этот файл будет служить резервной копией текущей таблицы.

def writeData(data):

    f = open('cars.sql', 'w')

    with f:
        f.write(data)

Данные из таблицы записываются в файл.

con = sqlite3.connect(':memory:')

Создаем таблицу во временной базе данных.

cur.execute("DROP TABLE IF EXISTS cars")
cur.execute("CREATE TABLE cars(id INT, name TEXT, price INT)")
cur.executemany("INSERT INTO cars VALUES(?, ?, ?)", cars)
cur.execute("DELETE FROM cars WHERE price < 30000")

Создаём таблицу cars, вставляем значения и удаляем строки, где цена меньше 30000.

data = 'n'.join(con.iterdump())

con.iterdump возвращает итератор для дампа базы данных в текстовом формате SQL. Встроенная функция join принимает итератор и объединяет все строки в итераторе, разделенные новой строкой. Эти данные записываются в файл cars.sql с помощью функции writeData.

Python SQLite — импорт данных

Выполним обратную операцию. Импортируем ранее сохранённую таблицу.

import sqlite3


def readData():

    f = open('cars.sql', 'r')

    with f:

        data = f.read()

        return data


con = sqlite3.connect(':memory:')

with con:

    cur = con.cursor()

    sql = readData()
    cur.executescript(sql)

    cur.execute("SELECT * FROM cars")

    rows = cur.fetchall()

    for row in rows:
        print(row)

Python SQLite — транзакции

Транзакция – это процесс выполнения операций с базой данных. В одной транзакции может быть несколько операций. Операции в транзакции могут быть либо выполнены целиком и полностью все, либо не выполнены вообще.

Транзакции начинаются с инструкции BEGIN TRANSACTION и завершаются инструкциями COMMIT или ROLLBACK.

SQLite поддерживает три уровня транзакций: DEFERREDIMMEDIATE and EXCLUSIVE.

  1. DEFERRED – данный режим блокировки является режимом по умолчанию в SQLite. В режиме DEFERRED SQLite начинает блокировать таблицы только после того, как будет начато выполнение какой-либо команды, при этом другие транзакции могут читать данные из таблицы, но не могут их изменять.
  2. IMMEDIATE – в данном режим происходит блокировка базы данных, как только будет выполнена команда BEGIN. При это режим IMMEDIATE в SQLIte допускает, что другие транзакции могут читать данные из базы данных, но не записывать.
  3. EXCLUSIVE – самый высокий уровень блокировки базы данных в SQLite. Режим EXCLUSIVE блокирует базу данных при выполнении команды BEGIN и при этом другие транзакции не могут ни читать данные из базы данных, ни уж тем более изменять данные.

Модуль Python SQLite также поддерживает режим автоматической фиксации, при котором все изменения в таблицах вступают в силу немедленно.

import sqlite3
import sys

con = None

try:
    con = sqlite3.connect('ydb.db')
    
    cur = con.cursor()
    cur.execute("DROP TABLE IF EXISTS friends")
    cur.execute("CREATE TABLE friends(id INTEGER PRIMARY KEY, name TEXT)")
    cur.execute("INSERT INTO friends(name) VALUES ('Tom')")
    cur.execute("INSERT INTO friends(name) VALUES ('Rebecca')")
    cur.execute("INSERT INTO friends(name) VALUES ('Jim')")
    cur.execute("INSERT INTO friends(name) VALUES ('Robert')")

    #con.commit()

except sqlite3.Error as e:

    if con:
        con.rollback()

    print(e)
    sys.exit(1)

finally:

    if con:
        con.close()

Мы создаем таблицу friends и пытаемся заполнить ее данными. Однако, как мы увидим, данные не фиксируются.

#con.commit()

Метод фиксации con.commit() закомментирован. Если мы раскомментируем строку, данные будут записаны в таблицу.

Python SQLite autocommit

В режиме автоматической фиксации инструкция SQL выполняется немедленно.

import sqlite3
import sys

con = None

try:
    con = sqlite3.connect('ydb.db', isolation_level = None)
    
    cur = con.cursor()

    cur.execute("DROP TABLE IF EXISTS friends")
    cur.execute("CREATE TABLE friends(id INTEGER PRIMARY KEY, name TEXT)")
    cur.execute("INSERT INTO friends(name) VALUES ('Tom')")
    cur.execute("INSERT INTO friends(name) VALUES ('Rebecca')")
    cur.execute("INSERT INTO friends(name) VALUES ('Jim')")
    cur.execute("INSERT INTO friends(name) VALUES ('Robert')")

except sqlite3.Error as e:

    print(e)
    sys.exit(1)

finally:

    if con:
        con.close()

В этом примере мы подключаемся к базе данных в режиме автоматической фиксации.

con = sqlite3.connect('ydb.db', isolation_level = None)

Смотрите также: Руководство по стилю SQL

Сообщение Python SQLite — учебное пособие на русском языке появились сначала на Веб-студия Юсота.


Source: usota.ru python

Особенности Zbrush 2022: часть 1

Команда Pixologic усердно работала над созданием и обновлением новых функций для Zbrush 2022! Мы собираемся охватить их все, так что давайте приступим к делу!

На сайте GFX-HUB (https://gfx-hub.cc) можно найти статьи про Zbrush и другой компьютерной графики, для 3D-художников и разработчиков игр.

 

Knife brush: это еще не все!

Один из любимых инструментов из последнего обновления получил несколько дополнительных функций: Knife Rec и Knife Circle. Теперь вы можете вырезать квадраты и круги из своей сетки на лету! Моделирование твердых поверхностей в Zbrush становится все лучше и лучше (а мы еще даже не коснулись BevelPro).

Особенности Zbrush 2022: часть 1

 

Фокусное смещение Gizmo

Эта функция настолько захватывающая! Теперь вы можете использовать сдвиг фокуса для изменения инструмента Gizmo. Не только это, но и то, что его можно использовать на любом инструменте транспонирования (включая ткань для транспонирования!)

По умолчанию фокальный сдвиг установлен на -100 (что означает, что он выключен). Проще говоря, к сетке применяется градиент маски. При перемещении ползунка вверх интенсивность маски увеличивается (при 100 Гизмо никак не повлияет на сетку, представьте, что она полностью замаскирована).

Особенности Zbrush 2022: часть 1

 

Барельеф

Одним из самых больших нововведений Zbrush 2022 является новая функция барельефа. Это дает вам возможность превратить вспомогательный инструмент или несколько вспомогательных инструментов в тиснение.

Он может работать несколькими способами:

  1. Вы можете проецировать видимые подинструменты на более низкий подинструмент с помощью палитры подинструментов.
  2. Кроме того, вы можете превратить один вложенный инструмент в альфа-версию, которую можно перетащить на другую сетку.

Настоятельно рекомендую поиграть с этой функцией!

Особенности Zbrush 2022: часть 1

Быстрые биты!

  • Интерполяция: теперь вы можете применять интенсивность и цвет!
  • Палитра деформаций: теперь вы можете использовать Повтор для активного, Повтор для другого или повтор для папки.
  • Набор видимости: теперь вы можете назначать разные подинструменты для разных наборов видимости.
  • Маска по глубине: в зависимости от угла наклона камеры к сетке можно применить градиентную маску.

Мы рассмотрели только некоторые из новейших функций, есть еще куча, которые будут рассмотрены в части 2, так что следите за обновлениями!



2022-09-24T18:49:45
Программное обеспечение

PeerTube 4.3 поддерживает импорт видео с других платформ и многое другое.

PeerTube 4.3 поддерживает импорт видео с других платформ и многое другое.

Импорт видео в Peerturbe

Только что стало известно запуск новой версии платформы децентрализованный для организации видеохостинга и стриминга ПирТьюб 4.3 и в этой новой версии были внесены некоторые довольно интересные изменения, такие как улучшения пользовательского интерфейса, среди прочего, в нем также подчеркивается поддержка импорта видео с других платформ в PeerTube.

Для тех, кто еще не знает о PeerTube, могу сказать, что это это платформа, основанная на клиенте BitTorrent WebTorrent., который запускается в браузере и использует технологию WebRTC для организации прямой канал связи P2P между браузерами и протокол ActivityPub, что позволяет объединить разрозненные видеосерверы в общую федеративную сеть, в которой посетители участвуют в доставке контента и имеют возможность подписываться на каналы и получать уведомления о новых видео. Веб-интерфейс, предоставляемый проектом, построен с использованием фреймворка Angular.



Читать

Сентябрьское обновление Xbox улучшает качество жизни на консоли и ПК

Вышло сентябрьское обновление Xbox, которое позволяет пользователям настраивать свой контроллер Elite Series 2, выбирать устройство хранения по умолчанию, активировать шумоподавление, делиться через Game Bar на ПК вместе с обновленной библиотекой.

 

Реконструкция библиотеки

Теперь в том же меню вы можете увидеть все игры и приложения, которыми вы владеете, а также любую игру, к которой у вас есть доступ по подписке, такой как EA Access и Xbox Game Pass, или игры, заявленные в Xbox Game with Gold. Хотя мы стараемся держать вас в курсе всех игр, присоединяющихся к сервису, таким образом вы не пропустите ни одного нового дополнения к Game Pass. Мы только хотим, чтобы Microsoft лучше уведомляла, когда игры вот-вот уйдут.

 

Место хранения по умолчанию

Наконец, вы можете выбрать, где по умолчанию будут установлены игры и приложения, избавляя вас от необходимости выбирать и перепроверять каждый раз, когда вы получаете новую игру. Или, что еще хуже, необходимость повторного переноса файлов с диска на диск, если вы случайно установили не в то место.

Теперь вы можете выбирать разные местоположения по умолчанию в зависимости от того, устанавливаете ли вы игру Series X|S, обратно совместимую игру или приложение.

Для этого в настройках устройства хранения выберите «Изменить места установки», если у вас подключены внешние диски или карта расширения хранилища. Вы можете выбрать конкретный диск в качестве места установки или предоставить решение Xbox.

Сентябрьское обновление Xbox улучшает качество жизни на консоли и ПК

 

Совместное использование с Xbox Game Bar в Windows

Xbox Game Bar на ПК теперь дает ссылку на любую сделанную вами игру.

Пользователи могут активировать эту функцию во время игры в любую игру на Windows, нажав клавиши «Windows + G» на клавиатуре или кнопку «Домой» на контроллере Xbox, чтобы открыть игровую панель Xbox, а затем нажмите «Копировать ссылку» на любом снимке из вашей галереи. Изображение будет загружено автоматически, и вы получите ссылку для общего доступа.

Обратите внимание: если ваши настройки установлены как общедоступные, любой, кто получит доступ к вашим ссылкам, сможет увидеть ваши общие снимки.

Сентябрьское обновление Xbox улучшает качество жизни на консоли и ПК

 

Подавление шума в групповом чате

Шумоподавление, впервые анонсированное для консолей Xbox Series X|S, теперь будет доступно для пользователей Xbox One и Windows 11/10. Мы надеемся, что это откроет эру меньшего фонового шума и тяжелого дыхания, хотя этого может быть недостаточно, чтобы дети не кричали поблизости. Хорошо для вашей личной жизни и ушей людей на другом конце провода.

Если вы хотите сохранить фоновый шум для групповой музыки или просто для того, чтобы раздражать своих друзей, вы все равно можете отключить его, выбрав «Тусовки и чаты», а затем «Параметры». В Windows 11/10 перейдите в раздел «Начать вечеринку», откройте «Настройки», затем «Аудио вечеринки».

Сентябрьское обновление Xbox улучшает качество жизни на консоли и ПК

 

Создавайте вечеринки с помощью приложения Xbox

Вам больше не нужно создавать вечеринку с нуля каждый раз, когда вы хотите вернуться к своим друзьям. Приложение Xbox теперь хранит ваши самые последние вечеринки на вкладке «Социальные сети»; вам просто нужно выбрать тот, включая друзей, с которыми вы хотите переиграть, и все. Очень полезно для игр, в которых есть ошибки, выкидывающие вас из вашей группы без причины (смотря на вас, Fall Guys). Очевидно, что вы по-прежнему можете создавать новые вечеринки и выбирать, каких друзей пригласить.

Сентябрьское обновление Xbox улучшает качество жизни на консоли и ПК

 

Настраиваемая кнопка Xbox Home на беспроводном геймпаде Xbox Elite Series 2

Кто сказал, что консоли не могут работать с RGB? Пользователи могут настроить цвет кнопки «Домой» контроллера Xbox Elite Series 2 из 16 миллионов оттенков. Для этого откройте приложение «Аксессуары Xbox» на консоли Xbox или ПК с Windows, когда подключен геймпад, выберите существующий профиль или создайте новый и выберите вкладку «Цвет». Если вы не можете найти именно тот цвет, который ищете, есть возможность ввести шестнадцатеричный код, а также изменить яркость логотипа по своему вкусу.

Вам понадобится последняя версия приложения Xbox Accessories и сентябрьское обновление Xbox, чтобы настроить цвет кнопки Xbox. Если вы не видите вариант выбора цвета, попробуйте перезапустить консоль Xbox, выбрав «Настройки» > «Основные» > «Спящий режим и запуск» > «Перезагрузить сейчас», чтобы получить обновление.

Сентябрьское обновление Xbox улучшает качество жизни на консоли и ПК

 

Меньше ограничений DRM

С другой стороны, Xbox также менее раздражает, когда речь идет о физических копиях игр, поскольку теперь вы можете играть в игры для Xbox One и Xbox Series без необходимости быть в сети. Как и следовало ожидать, это относится только к физическим копиям игр, и на данный момент для Xbox Game Pass, оригинальных игр для Xbox и Xbox 360, похоже, по-прежнему требуется подключение к сети.



2022-09-23T19:11:15
Microsoft