StoryCode

python.gmail.로그인.메일발송

Python, 파이썬
반응형

참조) https://oceancoding.blogspot.com/2019/11/smtp.html

 

선행작업)

1) 구글 계정 설정 ( Gmail 설정 아님 )

아래에서 "앱 비밀번호" 를 클릭하고 들어가, 비밀번호를 생성하면 된다.

 

 

 

2) 메일 발송 코드

import smtplib
from email.mime.text import MIMEText
 
# 세션 생성
s = smtplib.SMTP('smtp.gmail.com', 587)
 
# TLS 보안 시작
s.starttls()
 
# 로그인 인증
s.login('xxx@gmail.com', '16자리앱비밀번호')
 
# 보낼 메시지 설정
msg = MIMEText('내용 : 한글 내용')
msg['Subject'] = '제목 : 오션 코딩 학원'
 
# 메일 보내기
s.sendmail('sender@gmail.com', 'recevier@gmail.com', msg.as_string())
 
# 세션 종료
s.quit()

 

 

반응형

'Python, 파이썬' 카테고리의 다른 글

유튜브 업로드  (0) 2021.04.06
기차표 예매 (SRT)  (0) 2021.04.06
Python.설치파일만들기  (0) 2020.04.06
(작성중) Python.QT5.mathplotlib.막대그래프  (0) 2020.04.02
Application.PyQT5.Anaconda.PyCharm  (0) 2020.04.02

Python.설치파일만들기

Python, 파이썬
반응형

1) File > Settings > Project Interperter 에서 pyinstaller 설치

 

2) command> pyinstaller -F -n main.exe main.py

 

 

반응형

(작성중) Python.QT5.mathplotlib.막대그래프

Python, 파이썬
반응형

참조) https://umnoni.postype.com/post/6052068

Setting.project interpreter 에서 + 눌러서 mathplotlib 모듈 설치

 

반응형

'Python, 파이썬' 카테고리의 다른 글

python.gmail.로그인.메일발송  (0) 2020.06.15
Python.설치파일만들기  (0) 2020.04.06
Application.PyQT5.Anaconda.PyCharm  (0) 2020.04.02
아래한글 ( HWP ) 텍스트 처리  (0) 2020.02.17
DJango Debug Toolbar  (0) 2020.02.17

Application.PyQT5.Anaconda.PyCharm

Python, 파이썬
반응형

1) Python 3.X, PyQT 4 설치

http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4

 

1) Anaconda 설치

https://www.anaconda.com/distribution/

All User 로 설치 경로 = C:\Anaconda3

 

Qt Designer 인 C:\Anaconda3\Library\bin\designer.exe 바로 가기를 바탕화면에 배치

 

2) PyCharm Community

https://www.jetbrains.com/pycharm/download/

 

설치후 Configure - Settings 혹은 File - Settings- Project Interpreter - 오른쪽 톱니바퀴 Add - 왼쪽 System Interpreter 메뉴 - C:\Anaconda\python.exe 선택

 

OK 후 잠시 기다린 뒤, pyqt 확인

 

반응형

'Python, 파이썬' 카테고리의 다른 글

Python.설치파일만들기  (0) 2020.04.06
(작성중) Python.QT5.mathplotlib.막대그래프  (0) 2020.04.02
아래한글 ( HWP ) 텍스트 처리  (0) 2020.02.17
DJango Debug Toolbar  (0) 2020.02.17
디렉토리검색  (0) 2020.02.13

아래한글 ( HWP ) 텍스트 처리

Python, 파이썬
반응형

# 참조 1 : https://pypi.org/project/pyhwp/

# 참조 2 : https://pyhwp.readthedocs.io/ko/latest/

 

 

 

반응형

'Python, 파이썬' 카테고리의 다른 글

(작성중) Python.QT5.mathplotlib.막대그래프  (0) 2020.04.02
Application.PyQT5.Anaconda.PyCharm  (0) 2020.04.02
DJango Debug Toolbar  (0) 2020.02.17
디렉토리검색  (0) 2020.02.13
DJango 의 장점  (0) 2020.02.12

DJango Debug Toolbar

Python, 파이썬
반응형

https://github.com/jazzband/django-debug-toolbar

 

 

반응형

'Python, 파이썬' 카테고리의 다른 글

Application.PyQT5.Anaconda.PyCharm  (0) 2020.04.02
아래한글 ( HWP ) 텍스트 처리  (0) 2020.02.17
디렉토리검색  (0) 2020.02.13
DJango 의 장점  (0) 2020.02.12
DJango.ORM  (0) 2020.02.12

디렉토리검색

Python, 파이썬
반응형

참조) https://wikidocs.net/39

 

import os

def search(dirname):
    try:
        filenames = os.listdir(dirname)
        for filename in filenames:
            full_filename = os.path.join(dirname, filename)
            if os.path.isdir(full_filename):
                search(full_filename)
            else:
                ext = os.path.splitext(full_filename)[-1]
                if ext == '.py': 
                    print(full_filename)
    except PermissionError:
        pass

search("c:/")

 

 

혹은

 

 

 

import os

for (path, dir, files) in os.walk("c:/"):
    for filename in files:
        ext = os.path.splitext(filename)[-1]
        if ext == '.py':
            print("%s/%s" % (path, filename))

 

 

 

반응형

'Python, 파이썬' 카테고리의 다른 글

아래한글 ( HWP ) 텍스트 처리  (0) 2020.02.17
DJango Debug Toolbar  (0) 2020.02.17
DJango 의 장점  (0) 2020.02.12
DJango.ORM  (0) 2020.02.12
Django Rest FrameWork  (0) 2020.02.07

DJango 의 장점

Python, 파이썬
반응형

참조) https://blog.lxf.kr/2018-11-19---why-or-not-django/

 

 

기본 Admin 페이지 제공  
기본 보안 CSRF
편한 개발/디버깅  
각종 플러그인 RESTful, 캐싱, 이미지변환, CDN 지원
성능 느린편이나 확장이 용이.
반응형

'Python, 파이썬' 카테고리의 다른 글

DJango Debug Toolbar  (0) 2020.02.17
디렉토리검색  (0) 2020.02.13
DJango.ORM  (0) 2020.02.12
Django Rest FrameWork  (0) 2020.02.07
기본문법  (0) 2020.02.06

DJango.ORM

Python, 파이썬
반응형

참조) https://www.slideshare.net/EunhyangKim2/ss-118560530

# 앞 부분만 정리.

포스트 다 가져오기 Post.objects.all()
포스트 1개 가져오기 Post.objects.get(id=1)
내가 쓴 포스트 가져오기 Post.objects.filter(username="hyang")

 

머신 러닝 모델의 여러 버전마다 실행된 것들에서 8월 1일에서 8월20일까지 실행된 것 들 중 error 없이 실행된 active 한 것들만 모아서, 응답시간의 평균값, 최대값, 그리고 모델에 설정한 스레숄드 값보다 빠르게 응답한 개수 가져오기
#머신 러닝 모델의 여러 버전마다 실행된 것들에서 8월 1일에서 8월20일까지 실행된 것 들 중 error 없이 실행된 active 한 것들만 모아서
run_qs = Run.objects.filter(
    version__id__in=version_ids,
    ml_model__id__in=version_ids,
    is_active=True
    requested_at__range=(start_date, end_date)
)
# 응답시간의 평균값, 최대값
run_qs.aggregate(Avg('response_time'), Max('response_time'))
# 그리고 모델에 설정한 스레숄드 값보다 빠르게 응답한 개수 가져오기
run.response_time > ml_model.threshold인 run 의 총개수 ?
특정기준으로 값을 묶어 새로운 컬럼 만들때는 annotation!

run_qs.annotate(
    fast_runs=Count(
        Case(
               When(response_time__gt=F('ml_model_threshold'), then=1), output_field=IntegerField(),
        )
    )
).aggregate(Sum('fast_runs'))

 

ForeignKey select_related
ManyToManyField preFetch_related
# select_related : 데이타는 한꺼번에 가져와야 한다.
class Post(models.Model):
    author = models.ForeignKey(Author)
    tag = models.ManyToManyField(Tag)

1) 아래 경우는 각 문장이 각각 한번씩 query 해서 두번 가져온다.
post = Post.objects.get(id=1)
author = post.author

2) 위를 한번에 가져오려면 아래와 같이 변경한다.
post = Post.objects.select_related('author').get(id=1)
author = post.author
# prefetch_related : 
1) 아래 경우는 post 하나 돌때마다 가져온다.
posts = Post.objects.all()
for post in posts:
    for tag in post.tag_set.all():
        print(tag)

2) posts = Post.objects.all().prefetch_related('tag_set')
for post in posts:
    for tag in post.tag_set.all():
        print(tag)
# 불필요한 컬럼은 다 가져오지 않는다.
posts = Post.objects.values('name')
for post in posts:
    print(post.name)
# 필요한 것만 가져오기
1) 아래 경우는 If posts: 문장이 모든 데이타를 다 가져온다.
posts = Post.objects.all()
If posts: #
   print(posts)

2) 이를 아래와 바꾸는 것이 좋다.
If posts.exists()

 

참고 ) Django-debug-toolbar 에서 ORM 이 실제 쿼리를 어떻게 날렸는지 확인가능하다.

 

반응형

'Python, 파이썬' 카테고리의 다른 글

디렉토리검색  (0) 2020.02.13
DJango 의 장점  (0) 2020.02.12
Django Rest FrameWork  (0) 2020.02.07
기본문법  (0) 2020.02.06
DJango (Windows)  (0) 2020.01.31

Django Rest FrameWork

Python, 파이썬
반응형

# 참조 ) https://ssungkang.tistory.com/entry/Django-django-rest-framework-%EB%A5%BC-%EC%9C%84%ED%95%9C-JSON-%EA%B8%B0%EC%B4%88?category=366160

 

   
JSON 처리 import json

myData = {
  "squadName": "Super hero squad",
  "homeTown": "Metro City",
  "formed": 2016,
  "secretBase": "Super tower",
  "active": True,
  "members": [
    {
      "name": "Molecule Man",
      "age": 29,
      "secretIdentity": "Dan Jukes",
      "powers": [
        "Radiation resistance",
        "Turning tiny",
        "Radiation blast"
      ]
    }
  ]
}

print(type(myData)) # <class 'dict'>

myDataJson = json.dumps(myData)
print(type(myDataJson)) # <class 'str'>

myDataReturn = json.loads(myDataJson)
print(type(myDataReturn)) # <class 'dict'>
ModelSerializer 를 통한 JSON 직렬화 설명 1) ModelSerializer 를 통해  JSONRenderer 에서 변환가능한 형태로 먼저 데이터를 변환
참조1) JSON 을 생성하는 Serializer 는 html 을 생성하는 Django.Form 과 유사
참조2) Serializer 는 Django.Form 과 유사, ModelSerializer = DJango.ModelForm 과 유사


ModelSerializer 를 통한 JSON 직렬화 예제 참조) https://ssungkang.tistory.com/entry/Django-django-rest-framework-%EB%A5%BC-%EC%9C%84%ED%95%9C-JSON-%EC%A7%81%EB%A0%AC%ED%99%94?category=320582



models.py
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=100)
    message = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    update_at = models.DateTimeField(auto_now=True)







serializers.py
from rest_framework import serializers
from .models import Post

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = '__all__'







# config/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('core/', include('core.urls'), name='core'),
]






# core/urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from . import views

router = DefaultRouter()
router.register(r'posts', views.PostViewSet)

urlpatterns = [
    path('', include(router.urls)),
]







views.py
from django.shortcuts import render
from rest_framework import viewsets
from .models import Post
from .serializers import PostSerializer

class PostViewSet(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer






serializer = PostSerializer(post)
serializer.data

# {'id': 2, 'title': '제목 내용', 'message': '메세지 내용', 'created_at': '2019-11-18T18:52:57.489893Z', 'update_at': '2019-11-18T19:22:53.717588Z'}
type(serializer.data) 
# <class 'rest_framework.utils.serializer_helpers.ReturnDict'




serializer = PostSerializer(Post.objects.all())
serializer.data
# 오류

serializer = PostSerializer(Post.objects.all(), many=True)
serializer.data
# [OrderedDict([('id', 2), ('title', '제목 내용'), ('message', '메세지 내용'), ('created_at', '2019-11-18T18:52:57.489893Z'), ('update_at', '2019-11-18T19:22:53.717588Z')]), OrderedDict([('id', 3), ('title', '임시제목'), ('message', 'ㅡㅏㅏ'), ('created_at', '2019-11-18T18:52:57.489893Z'), ('update_at', '2019-11-18T18:52:57.499208Z')])]
type(serializer.data) 
<class 'rest_framework.utils.serializer_helpers.ReturnList'>





뷰에서의 JSON 응답 )
from django.core.serializers.json import DjangoJSONEncoder
from django.db.models.query import QuerySet

# QuerySet 타입에 대해서는 tuple로 변환
# Post 타입에 대해서는 dict로 변환
# 그 외에는 DjangoJSONEncoder 로 변환
class MyJSONEncoder(DjangoJSONEncoder):
    def default(self, obj):
        if isinstance(obj, QuerySet):
            return tuple(obj)
        elif isinstance(obj, Post):
            return {'id':obj.id, 'title': obj.title, 'message': obj.message }
        return super().default(obj)




# View 에서 json 리턴
from django.http import JsonResponse

data = Post.objects.all() # 직렬화할 QuerySet
encoder = MyJSONEncoder # DjangoJSONEncoder를 커스튬한 Encoder
safe = False # default = True 로서 변환할 데이터의 타입이 dict인지 확인합니다. dict 가 아닐 경우에는 False로 설정해주어야 합니다. QuerySet 은 dict 타입이 아니므로 False로 설정합니다.
json_dumps_params = {'ensure_ascii':False} # 한글 등의 유니코드는 16진수로 표현되므로 이를 False 로 바꿔주면 한글문자가 그대로 출력됩니다.
kwargs = {}

response = JsonResponse(data, encoder, safe, json_dumps_params, **kwargs)

response

response.content.decode('utf8')
# [{"id": 2, "title": "제목 내용", "message": "메세지 내용"}, {"id": 3, "title": "임시제목", "message": "ㅡㅏㅏ"}]

 

반응형

'Python, 파이썬' 카테고리의 다른 글

DJango 의 장점  (0) 2020.02.12
DJango.ORM  (0) 2020.02.12
기본문법  (0) 2020.02.06
DJango (Windows)  (0) 2020.01.31
설치.DJango + Redis + Celery  (0) 2020.01.29