Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
-28 / 0 / 0
Регистрация: 26.03.2025
Сообщений: 202

Получить id добавленной записи

30.03.2025, 14:00. Показов 1657. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class DB:
    def __init__(self):
        self.conn = pymysql.connect(host='localhost', user='test', passwd='*****', db='test', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)
        self.cursor = self.conn.cursor()
 
    def super_query(self, ql, params=None):
        self.conn.ping(reconnect=True)
        self.cursor.execute(ql, params)
        return self.cursor.fetchone()
 
    def in_upd(self, ql, params=None):
        self.conn.ping(reconnect=True)
        self.cursor.execute(ql, params)
        self.conn.commit()
 
    def close(self):
        self.conn.close()
 
SQL = DB()
 
inserted_data = SQL.in_upd("""INSERT INTO news (title, content)  VALUES (%s, %s)""", ('223', '223'))
 
print(inserted_data)  # Должны получить словарь с полями новой записи
Никак не выходит, получить массив полей. Допустим необходимо, не массив, а id добавленной записи.

Вариант когда необходимо присвоить конкретный id


Python
1
2
3
4
id = SQL.super_query("""SELECT n.id - 1 FROM news n LEFT JOIN news n2 ON n.id - 1 = n2.id WHERE n2.id IS NULL ORDER BY n.id DESC""")['n.id - 1']
inserted_data = SQL.in_upd("""INSERT INTO news (id, title, content)  VALUES (%s, %s, %s)""", (id, '223', '223'))
 
print(inserted_data)  # Должны получить словарь с полями новой записи
Так получим id будущей записи, id которого нет в бд, начиная сортировку с конца. Ок.
Если цепочка id цела, вернет 0, если принудительно добавлять строчку, указав id = 0.

По идеи, как в php, добавить запись, но id будет следующее, последней по порядку.
Code
1
2
3
1
2
3
Python
1
inserted_data = SQL.in_upd("""INSERT INTO news (id, title, content)  VALUES (%s, %s, %s)""", (0, '223', '223'))
Добавить запись с id 4

Собственно, как получить, вернуть id записи, которую добавили?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.03.2025, 14:00
Ответы с готовыми решениями:

Как вывести посты в блоге так чтоб последний добавленный пост был с верху?
Это как то реверсом нужно зделать я так понимаю, а как и в каком файле?

Как сделать так, чтобы последний добавленный элемент в комбо боксе, появлялся сверху
Как сделать так, чтобы последний добавленный элемент в комбо боксе, появлялся сверху Добавлено через 8 минут как использовать...

Как в else отобразить не добавленные элементы в DRF
Здравствуйте. Добавляю через файл записи в модель. Через post передается xls файл, парсится и добавляются значение в бд. С помощью...

1
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
30.03.2025, 17:49
Лучший ответ Сообщение было отмечено Fixmon как решение

Решение

Цитата Сообщение от Fixmon Посмотреть сообщение
Собственно, как получить, вернуть id записи, которую добавили?
Что бы получить id записи после добавление нужно обратится к insert_id, так же как и в php
Python
1
print(self.conn.insert_id())
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class DB:
    def __init__(self):
        self.conn = pymysql.connect(host='localhost', user='test', passwd='*****', db='test', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)
        self.cursor = self.conn.cursor()
 
    def super_query(self, ql, params=None):
        self.conn.ping(reconnect=True)
        self.cursor.execute(ql, params)
        return self.cursor.fetchone()
 
    def in_upd(self, ql, params=None):
        self.conn.ping(reconnect=True)
        self.cursor.execute(ql, params)
        self.conn.commit()
        return self.conn.insert_id()
 
    def close(self):
        self.conn.close()
 
SQL = DB()
 
inserted_data = SQL.in_upd("""INSERT INTO news (title, content)  VALUES (%s, %s)""", ('223', '223'))
 
print(inserted_data)  # Должны получить словарь с полями новой записи
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.03.2025, 17:49
Помогаю со студенческими работами здесь

Как отчистить qmenu от всех добавленных action?
Как отчистить qmenu от всех добавленных action?

Выведение добавленных строк из БД Постгрес в графический интерфейс Qt
Добрый день. Изучаю питон. И наткнулся на такую проблему. Создал в БД Постгрес вот такую табличку с данными (см. картинку БД) ...

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

Jythone - получить размер таблицы (Мб) и записать результат в файл
Создал в ODI код. Нужно записать в файл рядом с названием таблицы её размер. Пока что только записывает название. def prepareSQL(): ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru