Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 2, 2020 12:50:46

danker038
Зарегистрирован: 2019-07-11
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

heroku

Спасибо!
Не будет же такой фигни с очисткой данных при перезагрузке серверов, или когда бот падает на некоторое время?

Офлайн

#2 Апрель 2, 2020 14:53:37

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9740
Репутация: +  843  -
Профиль   Отправить e-mail  

heroku

danker038
Не будет же такой фигни с очисткой данных при перезагрузке серверов, или когда бот падает на некоторое время?
У меня висят записи в базе уже месяца два-три без изменений. Раньше были проблемы, но там база была криво подключена и всё время очищалась. Потом я её отключил, заново подключил новую базу уже и она уже висит месяцами без очисток. Они могут очищать (оставляют, по-моему, за собой право такое), но у меня после починки базы всё остаётся без изменений, пока я сам не удалю записи.



Офлайн

#3 Апрель 2, 2020 17:19:01

danker038
Зарегистрирован: 2019-07-11
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

heroku

Черт, у меня проблемы с Postgres-ом
туториулов нет нигде.
можете подсказать, как все это оформить, где создать бд и как обращаться к ней?

И что если использовать базу данных на личном пк, будет же хост воспринимать те данные?

Отредактировано danker038 (Апрель 2, 2020 19:03:46)

Офлайн

#4 Апрель 3, 2020 00:00:09

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9740
Репутация: +  843  -
Профиль   Отправить e-mail  

heroku

Чтобы поставить на 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

Советую сначала освоиться с PostgreSQL через его клиент. Сначала ты всё настраивать будешь на Heroku через свой клиент на компьютере, подключаясь к базе данных на Heroku по ссылке, которую тебе даст Heroku. То есть ты создашь там таблицу, запишешь в неё тестовые данные, прочитаешь их. С базой на Heroku работаешь со своего компьютера.

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

Для подключения к базе данных PostgreSQL из питона используется сторонний модуль psycopg2. Так как он сторонний, его надо ставить на Heroku. Это делается путём указания в файле requirements.txt строки
psycopg2==2.8.3

Минимальный код подключения к базе данных PostgreSQL из питона
  
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()


tags: heroku postgresql



Отредактировано py.user.next (Апрель 3, 2020 00:05:10)

Офлайн

#5 Апрель 5, 2020 19:56:16

danker038
Зарегистрирован: 2019-07-11
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

heroku

Все отлично!

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

P.S. через форум тяжело общаться, можем мы перейти куда то в другое место, например телеграм?

Офлайн

#6 Апрель 6, 2020 00:49:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9740
Репутация: +  843  -
Профиль   Отправить e-mail  

heroku

danker038
либо на сайте хероку смотреть как то можно?
На сайте можешь сделать секретный маршрут, при заходе по которому будет запускаться SQL-запрос к базе и будут выводиться ответные данные на страницу. Это делается по аналогии с публичными ссылками на Google Drive или Яндекс.Диск .

danker038
можем мы перейти куда то в другое место, например телеграм?
Мы наполняем форум информацией, полезной для кого-нибудь, кто будет искать то же самое потом в Google и придёт сюда. Также я даю тут полные расклады и помечаю их тегами, чтобы точно так же при последующих вопросах на те же самые темы спустя месяцы отыскивать свои же ответы по тегам через Google и давать на них ссылку, чтобы не писать одно и то же сто раз.



Офлайн

#7 Апрель 7, 2020 19:54:13

danker038
Зарегистрирован: 2019-07-11
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

heroku

API TelegramBot библиотека “telebot”
Есть ли такая возможность узнать юзернейм(@username) или Имя человека зная его id c помощью бота и без личной переписки с ним?
Если есть, то как?

Отредактировано danker038 (Апрель 7, 2020 20:10:53)

Офлайн

#8 Апрель 7, 2020 23:23:27

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9740
Репутация: +  843  -
Профиль   Отправить e-mail  

heroku

danker038
API TelegramBot библиотека “telebot”
Надо тебе отдельную тему создать. Здесь по Heroku только обсуждение.



Отредактировано py.user.next (Апрель 7, 2020 23:23:38)

Офлайн

#9 Апрель 8, 2020 01:38:34

danker038
Зарегистрирован: 2019-07-11
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

heroku

хорошо, спасибо за помощь

Офлайн

#10 Апрель 9, 2020 04:35:59

danker038
Зарегистрирован: 2019-07-11
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

heroku

Постоянно выбивает такую ошибку:

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]


Я так понимаю проблема с API, но а как можно решить, а то напрягает?

Отредактировано danker038 (Апрель 9, 2020 04:36:39)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version