Python 61

블로그만들기(1) - 게시판 글쓰기 만들기(파이썬(python),Mongodb)

개인 블로그를 처음부터 만들면서 공부할 예정이다. 우선 웹서버를 동작 시켜줄 프로그램은 Flask를 사용할 생각이다. 그리고 블로그 컨텐츠들은 mongo db에 저장하고 robo 로 결과를 확인할 생각이다. flask 와 mongodb에 대한 부분은 내 블로그 카테고리 또는 검색을 통해 알아보자. 아래 코드는 파이썬에서 flask 모듈을 가져와서 선언해주고 mongodb와 연결한 코드이다. 제대로 연결이 되었는지 확인을 위해 임의로 작성한 데이터를 mongodb에 업로드 해보고 결과를 확인해보겠다. 코드>> from flask import * from flask_pymongo import PyMongo import time #############################################..

파이썬으로 인스타그램 자동 댓글 남기기(python instagram comment automation)

앞서 장에서는 처음에 인스타 자동 로그인을 실행하였다. 그리고 해시태그를 이용해서 자동 검색을 하였다. 그리고 원하는 페이지만큼 자동으로 좋아요를 클릭하였다. (앞에 내용을 확인하고 싶다면 블로그에 인스타그램 카테고리에서 확인할 수 있다.) 이번장에는 좋아요를 클릭하고 동시에 해당 페이지에 "hello BTS" 라는 댓글을 남길 것이다. 이번 코드의 진행 순서는 아래와 같다. 1. 자동 로그인 2. #BTS 로 검색하기 3. 페이지 "좋아요" 클릭하기 4. 댓글로 "hello BTS" 남기기 5. 다음페이지로 넘기기 6. 3~5번을 8번 반복하기. 우선 댓글에 xpath 위치를 instagram에서 확인해보자. xpath에 대한 내용은 아래 링크에서 확인할 수 있다. scribblinganything.t..

아두이노에서 온도값 주면 db에서 저장한 값을 webGUI에서 그래프로 출력하기

이번 프로젝트는 아두이노에서 온도값을 컴퓨터로 serial 통신을 사용해서 전달한다. (1초단위) ​ serial로 받은 값은 파이썬과 mongodb를 이용해서 db에 저장한다. ​ 동시에 다른 파이썬 프로그램에서는 web GUI 를 flask를 이용해서 실행시키고 db에서 읽은 값을 웹브라우져를 통해 그래프로 표현하다. ​ 여기서는 그래프로 출력하는 파이썬 flask와 html 코드를 설명하겠다. ​ 코드 - flask python>> from flask import Flask, Response, render_template from pymongo import MongoClient from datetime import datetime import json import time import random ..

serial 통신으로 받은 값 DB에 저장하기

이번 프로젝트는 미리 만들어 놓은 아두이노에서 온도 습도 가스 등등의 값들을 측정해서 serial 통신으로 1초 간격으로 보내주는데 받은 값을 파이썬으로 mongodb에 저장하는 파이썬 프로그램을 만들 것이다. 저장값은 robo 프로그램으로 확인할 것이다. 아래 값은 아두이노에서 보내는 값들이다 이중에 온도와 습도를 의미하는 Tv와 Hv 값을 가져오겠다. As0 Vs10 Es0 Cs400 Ts4000 Hs0 Lv0 Cv1129 Tv6855 Hv1561 Vv0 Ev400 Dv3 파이썬 코드를 통해 이해해보자 코드 >> from pymongo import MongoClient from time import sleep import serial import time class SertoDB_OOP(): def ..

mongodb 두개의 프로그램으로 쓰면서 읽기

이번 주제는 하나의 프로그램이 db에 쓰기만을 하는 동안 다른 프로그램에서 해당 db에 접속해서 읽는동작만 하는 것을 구현하였다. 일초 단위로 읽고 쓰고 읽는 값은 마지막 3개의 값만 출력하는 것으로 하였다. 파이썬으로 작성하였고 pymongo로 동작한다. 아래 코드를 통해 이해해 보자. 코드 - write.py>> from pymongo import MongoClient from time import sleep my_client = MongoClient("mongodb://localhost:27017/") db = my_client['number_inc'] db_col = db.numbers idx = 0 while True: post = { "num": idx, } db_col.insert_one(p..

데이터 베이스 (DB) 개념

이번 프로 젝트는 파이썬으로 웹서버를 만들 것이다. 웹서버를 운영하기 위해 웹프로그램이 필요한데 이를 파이썬으로 할 것이다. 웹서버에는 사용자 정보나 각종 서버에 정보를 쓰고 읽고 하는 공간이 필요 하다. 이 공간이 데이터베이스다. 기존의 DB는 RDBMS(Relational Data Base Management System)라고 불렸다. Relational 은 엑셀과 같이 테이블로 구조를 가진것 처럼 생각하면 된다. 구조의 상대적 위치를 통해 자료를 찾는 것이다. SQL(Structured Query Language)이 Relational을 사용한다. SQL은 행과 열의 구조가 갖춰진 채로 저장하는 것이다. 나머지 DB 형태는 No SQL이라고 하는데 Document, Search engine, Key..

파이썬 함수안에 함수, 중첩함수

가끔 함수안에 함수를 쓰는 경우가 있는데 하나의 함수로 코드를 끝내고 싶을 때 쓰긴하지만 비효율 적이라 보통은 class를 사용한다. 함수안에 함수를 사용하게 되면 가장 바깥에서 선언된 변수는 함수 내에서는 전역변수 처럼 동작하고 함수 안의 함수에서 선언된 변수는 지역변수 처럼 동작한다. 아래 코드를 통해 이해해보자. 코드>> def f_out0(a_var): b_var = a_var print(id(a_var)) print(id(b_var)) print(b_var) print("#######") def f_in0(): b_var = "hi" print(id("hi")) print(id(b_var)) print(b_var) print("#######") def f_in1(): print(id(a_var)..

collections.defaultdict 이란

딕셔너리는 존재하지 않는 키 값을 출력 할 경우 아래 코드 처럼 에러가 발생 한다. 이러한 에러를 없애기 위해 try 문을 사용한다. import collections a_var = {"k_1":"v_1","k_2":"v_2","k_3":"v_3","k_4":"v_4"} try: print(a_var["k_5"]) except: print("에러발생") 결과>> 에러발생 defaultdict 객체는 위의 딕셔너리 문제를 쉽게 해결해 준다. defaultdict에 인자 값은 int, list, set 을 받을 수 있다. 아래 코드 처럼 키의 value 값은 default로 int 0이 자동으로 들어 간다. 그리고 인자를 int로 사용했을 경우에도 다른 값 (여기서는 string) 을 선언해서 사용할 수 있..

locals(), globals()

locals 와 global의 현재 namespace (전역, 지역, builtin) 을 딕션너리(dict)으로 정리해서 넣어 준다. 둘의 차이는 locals은 말그대로 locals()가 실행되어지는 함수내의 지역 namespace 들을 정리해서 넣어주고 globals는 전역, 지역, builtin 정보 모두 dict 형태로 정리해 준다. 아래 예제를 통해 이해해 보자. a_var = range(2) def locals_test(): b_var = 3 c_var = "hi" d_var = locals() print(d_var) locals_test() e_var = globals() print(e_var) 결과>> {'b_var': 3, 'c_var': 'hi'} {'__name__': '__main__..

enumerate, index값 불러오기

자료형 list, set, tuple 들은 값의 순서를 왼쪽부터 index를 매길 수 있다. enumerate를 사용하지 않는 다면 아래 코드 처럼 갯수를 알기 위해 len라는 함수를 불러 추가적인 작업이 필요하다. a_var = range(5) for index in range(len(a_var)): print(index, a_var[index]) enumerate를 사용하면 아래 코드 처럼 함수 하나로 index와 값을 추출 할 수 있다. 여기서 우리는 enumerate의 return 값은 index, value 두 개가 나옴을 알 수 있다. a_var = range(5) for index, x in enumerate(a_var): print(index, x) 결과>> 0 0 1 1 2 2 3 3 4 4