
안녕하세요.
저번에는 작성했던 글에 이어서 텔레그램(Telegram) 데이터 가져오기를 구현해보겠습니다.
Python 텔레그램(telegram) 설치(Installation), 로그인(Signing in), API 개발 도구(API development tools) - 1
안녕하세요. 오늘은 텔레그램 데이터를 가져오고, 데이터베이스 저장 및 프론트엔드, await 과 async 에 대해서 알아보겠습니다. 텔레그램에서 왜 데이터를 가져오냐 에 대해서는 주식관련 뉴스나
newbiecs.tistory.com
링크에서 발급받은 API_ID 와 API_HASH 값이 없으면 구현할 수 없기 때문에
위 링크를 꼭 봐주시기 바랍니다.
Python 을 이용하여 텔레그램 채널 데이터를 가져오고,
가져온 정보를 Django models(ORM) Database 에 저장해보겠습니다.
1. Python 초기세팅 & Django setup
Python 에서 Django 의 데이터를 가져오고 싶거나
"독립형" Django 사용을 위해서는 django.setup() 호출이 필요합니다.
django.setup() 에 관한 설명은 링크를 누르시면 됩니다.
Django
The web framework for perfectionists with deadlines.
docs.djangoproject.com
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
import django
django.setup()
이런 식으로 설정하면 models.py 에 정의한 테이블을 가져올 수 있습니다.
2. Django | add a Model
class BaseModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class Channel(BaseModel):
channel_id = models.IntegerField(default=0)
name = models.CharField(max_length=32)
class Meta:
verbose_name = 'Channel'
verbose_name_plural = 'Channels'
ordering = ['created_at']
def __str__(self):
return f"Channel-{self.channel_id}-{self.name}"
class Stock(BaseModel):
channel = models.ForeignKey("Channel", related_name="channel", on_delete=models.CASCADE, db_column="channel_id")
title = models.CharField(max_length=255) # 국내 대체육 시장 200억 ...
description = models.TextField() # 상세 설명
site_name = models.CharField(max_length=32) # 연론사 뷰, MBC, ...
url = models.URLField(max_length=255) # 뉴스 링크
date = models.DateTimeField() # 작성 날짜
class Meta:
verbose_name = 'Stock'
verbose_name_plural = 'Stocks'
ordering = ['-created_at']
def __str__(self):
return f"Stock-{self.channel}-{self.title}"
BaseModel 은 보통 다른 프로젝트에서도 많이 사용하곤 합니다.
'abstract = True' 를 명시하여 다른 테이블에서도 가져와 사용할 수 있습니다.
Channel 은 텔레그램의 채널을 의미 합니다.
아래 사진에서 보이는 주식 급등일보...가 채널입니다.

위에 보이는 사진이 채널 안에 들어온 것이고,
이 안에 운영자들이 작성한 글들을 가져오는 것 입니다.

여기서 중요한 건 ID 즉 @FastStockNews 입니다.
Stock 은 텔레그램 채널에서 가져온 데이터에서 제공하는 값들을 저장합니다.
저는 기본적으로 아래의 데이터들만 사용하였습니다.
title, description, site_name, url, date 등등 다양한 값이 존재합니다.
models 를 만들었다면
poetry run python manage.py makemigrations stock
poetry run python manage.py migrate stock
or
python manage.py makemigrations stock
python manage.py migrate stock
makemigrations 및 migrate 해주시면 됩니다.
오늘은 Telegram(텔레그램) 채널 데이터를 알아봤고,
Python, Django setup 에 대해 구현했습니다.
Model 을 만들고, 텔레그램에서 이런이런 데이터들을 가져오겠다를 만들어 봤습니다.
다음 글에서는 직접 구현하여 데이터를 가져오는 것을 하겠습니다.
궁금하신 점이나 고치면 좋겠다는 내용이 있다면 댓글 부탁드립니다.
감사합니다.
'Language > Python' 카테고리의 다른 글
| [PostgreSQL] sorry, too many clients already 문제 해결 (0) | 2023.02.23 |
|---|---|
| Python 구글 뉴스 데이터 크롤링(apscheduler, nohup) - 2 (0) | 2023.02.14 |
| Python 텔레그램(telegram) 설치(Installation), 로그인(Signing in), API 개발 도구(API development tools) - 1 (0) | 2023.01.30 |
| Python 구글 뉴스 데이터 크롤링(beautifulsoup4, slack) - 1 (2) | 2022.11.07 |
| Save to AWS EFS(PVC) as AWS Lambda (2) | 2022.08.22 |
댓글