@akrel

Как организовать внос данных в базу данных?

У меня есть вк бот на пайтоне с подключенной базой данных, в нем есть код который автоматически находит из всех участников беседы администраторов и заносит их в owner в таком виде [595883127, 208790503, 43666547, и т.д]
вот сам код:
owner = [] 
			
for manager in vk_session.method("messages.getConversationMembers", {
	"peer_id": 2000000000 + id, 
	'fields': 'profiles'
	})['items']:
	if manager.get("is_admin", False):
		owner.append(manager['member_id'])

Подскажите, как можно вытаскивать из owner по 1 id, проверять нет ли в базе данных такого id, если есть то проверять следующий id, если нет то заносить его и дальше проверять остальные?
  • Вопрос задан
  • 96 просмотров
Решения вопроса 2
@mayton2019
Bigdata Engineer
Сколько работаю с БД - впервые слышу глагол "внос". Слышал: загрузка, input, ingestion, migration, load, pull.

Ладно. Вобщем ты конено тег не поставил БД. В классическом SQL я не помню такой команды. Но в Postgres есть
insert ... on conflict ...
где ты указываешь что делать если ключик уже есть.

В Oracle можно сделать как-то так
merge into .... using dual on (key = key)
         when not matched then insert (...) values (...)
             when matched then update set ....;


И возможно в современных SQL/Nosql системах уже UPSERT поддерживается нативно.
Ответ написан
@akrel Автор вопроса
Решил задачу с таким кодом:
with sq.connect('data.bd') as con:
				con.row_factory = sq.Row
				cur = con.cursor()
				cur.execute('SELECT vk_id FROM Owners')
				for result in cur:
					for i in owner:
						if i == result['vk_id']:
							print('1')
						else:
							if i > 0:
								user = utils.get_owner_by_id(i)

Код utils.get_owner_by_id:
def get_owner_by_id(i):
    Owner(
        vk_id=i,
    ).save()

Но к сожалению через несколько секунд после исполнения кода вылезает ошибка
Exception has occurred: OperationalError
database is locked
так что теперь необходимо решать ее.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Фаст Софт Санкт-Петербург
от 150 000 до 180 000 ₽
от 250 000 ₽
Sibdev Красноярск
от 120 000 до 180 000 ₽
31 мар. 2023, в 15:41
15000 руб./за проект
31 мар. 2023, в 15:18
4000 руб./за проект
31 мар. 2023, в 15:08
5000 руб./за проект