Форум сайта python.su
Спасибо!
Не будет же такой фигни с очисткой данных при перезагрузке серверов, или когда бот падает на некоторое время?
Офлайн
danker038У меня висят записи в базе уже месяца два-три без изменений. Раньше были проблемы, но там база была криво подключена и всё время очищалась. Потом я её отключил, заново подключил новую базу уже и она уже висит месяцами без очисток. Они могут очищать (оставляют, по-моему, за собой право такое), но у меня после починки базы всё остаётся без изменений, пока я сам не удалю записи.
Не будет же такой фигни с очисткой данных при перезагрузке серверов, или когда бот падает на некоторое время?
Офлайн
Черт, у меня проблемы с Postgres-ом
туториулов нет нигде.
можете подсказать, как все это оформить, где создать бд и как обращаться к ней?
И что если использовать базу данных на личном пк, будет же хост воспринимать те данные?
Отредактировано danker038 (Апрель 2, 2020 19:03:46)
Офлайн
Чтобы поставить на Heroku, надо выполнить команду в клиенте heroku
https://elements.heroku.com/addons/heroku-postgresql
Туториал по PostgreSQL
https://www.tutorialspoint.com/postgresql/index.htm
https://www.tutorialspoint.com/postgresql/postgresql_create_database.htm
https://www.tutorialspoint.com/postgresql/postgresql_select_database.htm
https://www.tutorialspoint.com/postgresql/postgresql_create_table.htm
Документация по PostgreSQL
https://www.postgresql.org/docs/12/index.html
Сначала ты ставишь расширение PostgreSQL на Heroku. Heroku тебе даёт длинную ссылку для доступа к базе данных (в этой ссылке и имя, и пароль уже есть). Затем по этой ссылке можно подключиться из клиента PostgreSQL, который есть у тебя на компьютере.
У меня Linux Fedora, для неё есть такой минимальный набор команд для установки клиента PostgreSQL и создания базы
sudo dnf install postgresql postgresql-server postgresql-contrib
sudo postgresql-setup --initdb
sudo systemctl enable postgres
sudo systemctl start postgres
sudo usermod -aG postgres
sudo -u postgres psql
create database test;
\l -- list database
\d -- list tables
\d table -- describe table
psql test
test=>
# to make user
CREATE USER guest WITH PASSWORD '';
# analog
createuser guest
# to make database owned by user
CREATE DATABASE test OWNER guest;
# analog
createdb --owner=guest test
# to enter by guest
sudo emacs -nw /var/lib/pgsql/pg_hba.conf
# change from
host all all 127.0.0.1/32 ident
# change to
host all all 127.0.0.1/32 trust
psql -h 127.0.0.1 test
psql -h 127.0.0.1 -U guest test
psycopg2==2.8.3
import psycopg2 conn = psycopg2.connect(длинная_ссылка_подключения) conn.set_client_encoding(строка_кодировки) cur = conn.cursor() cur.execute( "INSERT INTO " + имя_таблицы + "(number,message) " "VALUES (%s, %s)", (1, 'test message') ) conn.commit() conn.close()
Отредактировано py.user.next (Апрель 3, 2020 00:05:10)
Офлайн
Все отлично!
вопрос, как бы мне видеть все, что туда добавляется, не через консоль
есть ли отдельный лаунчер для postgresql?
либо на сайте хероку смотреть как то можно?
P.S. через форум тяжело общаться, можем мы перейти куда то в другое место, например телеграм?
Офлайн
danker038На сайте можешь сделать секретный маршрут, при заходе по которому будет запускаться SQL-запрос к базе и будут выводиться ответные данные на страницу. Это делается по аналогии с публичными ссылками на Google Drive или Яндекс.Диск .
либо на сайте хероку смотреть как то можно?
danker038Мы наполняем форум информацией, полезной для кого-нибудь, кто будет искать то же самое потом в Google и придёт сюда. Также я даю тут полные расклады и помечаю их тегами, чтобы точно так же при последующих вопросах на те же самые темы спустя месяцы отыскивать свои же ответы по тегам через Google и давать на них ссылку, чтобы не писать одно и то же сто раз.
можем мы перейти куда то в другое место, например телеграм?
Офлайн
API TelegramBot библиотека “telebot”
Есть ли такая возможность узнать юзернейм(@username) или Имя человека зная его id c помощью бота и без личной переписки с ним?
Если есть, то как?
Отредактировано danker038 (Апрель 7, 2020 20:10:53)
Офлайн
danker038Надо тебе отдельную тему создать. Здесь по Heroku только обсуждение.
API TelegramBot библиотека “telebot”
Отредактировано py.user.next (Апрель 7, 2020 23:23:38)
Офлайн
хорошо, спасибо за помощь
Офлайн
Постоянно выбивает такую ошибку:
2020-04-09 04:34:20,410 (__init__.py:417 MainThread) ERROR - TeleBot: "A request to the Telegram API was unsuccessful. The server returned HTTP 409 Conflict. Response body:
[b'{"ok":false,"error_code":409,"description":"Conflict: terminated by other getUpdates request; make sure that only one bot instance is running"}']"
2020-04-09 04:34:52,501 (util.py:65 PollingThread) ERROR - TeleBot: "ApiException occurred, args=('A request to the Telegram API was unsuccessful. The server returned HTTP 409 Conflict. Response body:\n[b\'{"ok":false,"error_code":409,"description":"Conflict: terminated by other getUpdates request; make sure that only one bot instance is running"}\']',)
Traceback (most recent call last):
File "D:\Programs\Python12\lib\site-packages\telebot\util.py", line 59, in run
task(*args, **kwargs)
File "D:\Programs\Python12\lib\site-packages\telebot\__init__.py", line 276, in __retrieve_updates
updates = self.get_updates(offset=(self.last_update_id + 1), timeout=timeout)
File "D:\Programs\Python12\lib\site-packages\telebot\__init__.py", line 246, in get_updates
json_updates = apihelper.get_updates(self.token, offset, limit, timeout, allowed_updates)
File "D:\Programs\Python12\lib\site-packages\telebot\apihelper.py", line 180, in get_updates
return _make_request(token, method_url, params=payload)
File "D:\Programs\Python12\lib\site-packages\telebot\apihelper.py", line 56, in _make_request
return _check_result(method_name, result)['result']
File "D:\Programs\Python12\lib\site-packages\telebot\apihelper.py", line 75, in _check_result
raise ApiException(msg, method_name, result)
telebot.apihelper.ApiException: A request to the Telegram API was unsuccessful. The server returned HTTP 409 Conflict. Response body:
[b'{"ok":false,"error_code":409,"description":"Conflict: terminated by other getUpdates request; make sure that only one bot instance is running"}']
"
2020-04-09 04:34:52,501 (__init__.py:417 MainThread) ERROR - TeleBot: "A request to the Telegram API was unsuccessful. The server returned HTTP 409 Conflict. Response body:
[b'{"ok":false,"error_code":409,"description":"Conflict: terminated by other getUpdates request; make sure that only one bot instance is running"}']"
[code][/code]
Отредактировано danker038 (Апрель 9, 2020 04:36:39)
Офлайн