Как получить значения из столбца в БД?
Есть бот, хочу сделать рассылку всем пользователям, нужны их id, они хранятся в столбце БД.
Что смог уже сделать:
import sqlite3
from sqlite3 import Error
from time import sleep, ctime
con = sqlite3.connect('bot_users.db')
with con:
cur = con.cursor()
cur.execute("SELECT user_id FROM users")
while True:
us_id = cur.fetchone()
if us_id == None:
break
users_id = list(us_id)
print(users_id)
Вывод перевел в список, но переводятся все id в первый элемент списка.
Так выглядит:
Если поставить 1, то уже выхожу за границы списка. Цель, получить каждое id по отдельности, так как отправка сообщения будет каждому по отдельности.
Ответы (3 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
import sqlite3
from sqlite3 import Error
from time import sleep, ctime
con = sqlite3.connect('bot_users.db')
with con:
cur = con.cursor()
cur.execute("SELECT user_id FROM users")
while True:
us_id = cur.fetchone()
if us_id == None:
break
# users_id = list(us_id)
# print(users_id)
print(f'{us_id[0]}')
Автор решения: St0rm1k
→ Ссылка
я сам нашел выход
users_id = []
for id in us_id:
users_id.append(int(id[0]))
print(users_id)
Автор решения: MaxU
→ Ссылка
В данном случае гораздо эффективнее использовать метод cur.fetchall():
with con:
cur = con.cursor()
cur.execute("SELECT cast(user_id as INTEGER) as user_id FROM users")
users_id = [row[0] for row in cur.fetchall()]

