python-devel 패키지? 가 없어서 발생하는 에러라고 한다.

설치된 파이썬 버젼에 맞춰서 설치해주면 되는데..


링크 : 스택오버플로우


나는 안된다.



내 에러는 위와 같은데 setup.py를 하는 도중 에러가 발생하고, 아래서 세번째 줄을 보면 -fpic -I 어쩌고 하는 부분에서 3.6이 언급되어있다.


링크 : 위 관련 블로그


나는 여태 3.4버젼을 사용하니 python34-devel을 설치하면 되는줄 알았는데 얘는 그게 아니었다.

그래서 python36-devel로 설치한 후 원하는 패키지를 설치하니 성공하였다...


동시에 많은 수의 requests를 날리기 위해 async를 사용해야했다.

그리고 간단한 테스트 등은 주피터 노트북이 편하기에 거기서 스크립트를 작성하여 async로 날렸는데 event loop is running 에러가 뜬다.


원인은 주피터 내에 있는 tornado 때문인듯(?)

tornado가 5버젼 이상이면 그리하다고 하여

torando를 다운그레이드 하였다.


!pip install tornado==4.5.3 인가.. 암튼.. 5보다 낮게.


jupyter notebook event loop tornado로 검색하면 많이 나올 것이다.

date_time_str = 'Tue Sep 18 2018' date = 'Tue Sep 18 2018 17:51:39' date_time_obj = datetime.strptime(date, '%a %b %d %Y %H:%M:%S') # 얘는 문자를 datetime 타입으로 date_time = datetime.strftime(date_time_obj, '%a %b %d %Y') # 얘는 datetime을 문자로 변경해준다 # 이 두개의 차이점은 strptime이냐 strftime 이냐 이 차이이다. # p이냐 f이냐에 따라서 달라진다. print(date_time_obj) print(date_time)

추가로 저 %에 따라서 날의 표현이 달라진다
"Jun 28 2018 at 7:40AM" -> "%b %d %Y at %I:%M%p"
"September 18, 2017, 22:19:55" -> "%B %d, %Y, %H:%M:%S"
"Sun,05/12/99,12:30PM" -> "%a,%d/%m/%y,%I:%M%p"
"Mon, 21 March, 2015" -> "%a, %d %B, %Y"
"2018-03-12T10:12:45Z" -> "%Y-%m-%dT%H:%M:%SZ"
할때마다 추가해야지. 특정 모양대로 사용하면 편하다


다만 datetime 객체를 사용하는것은 생각보다 코스트가 높다.

그리고 저렇게 일일히 신경 쓰기 싫으면 datetime.parser를 불러내서 사용하는게 제일 편하다.


pip install mysqlclient

이런식으로 하게 될 경우 c++ 에러가 뜬다.
물론 가장 간단하게는 비주얼 스튜디오를 설치하면 되지만 시간도 오래걸리고 용량도 크기에 다른
방법을 찾아보았다.

찾은 방법은 wheel 파일을 다운 받는것. 아마 파일 그대로 다운 받아서 설치하는 방식인듯..
아래 두 링크는 모두 stackoverflow이다
wheel 인스톨 방법
wheel 인스톨시 에러날때
1. 간단히 설명하자면 wheel이 있는 곳에서 원하는 패키지를 다운 받는다1
2. 패키지 명에 cp 라고 적혀있는데 이는 파이썬 버젼을 뜻하는 것이라 한다. 3.6이면 cp36을 받으면 된다
3. 마지막으로 다운 받은 경로 전체를 적어줘야한다
# 뒤에 파일명에는 경로가 전체 
pip install C:/desktop/folder/filename/파일명.whl
이런식으로


1) 책 1.5권 읽기(지난달 0.5권 + 이번달 1권)

2) 신기술 공부(1개?)

3) 체지방 1.2kg감량

(8월달 1.3kg 감량 성공)

4) 알고리즘 3개

0. sqlalchemy는 기존의 자바-스프링과 다른듯.

매퍼가 따로 필요없나? 싶기도 하고, mybatis와 같은 프레임웍인가 싶기도 하고

아직도 감을 못잡겠다.


1. DB와의 접속을 위에 session()을 선헌해주고 이를 가져온다.

#공간확보
session = Session() # DB 접속을 위해 세션에 연결한다. 당연히 이 Session은 create_engine을 통해 DB와 연결을 해야한다.. 이건 나중에..

query = session.query(users)  #괄호 안에 테이블, 또는 테이블.칼럼명(users.id) 이런식으로 하여 연결한다
# 여기서 query 자체는 그냥 쿼리문이다! 데이터를 가져오려면 
query.all()
query.first() # 등을 해야한다

query = session.query(users).all() # select * from users
query = session.query(users.id) # select id from users
query = session.query(users.id, users.email) # select id, email fromusers

# filter, func 등을 사용하면 where, 집계 함수 등을 사용할 수 있다.
query = session.query(user).filter(user.id = 'test') # select * from users where id = 'test'
query = session.queyr(user).filter(user.id = 'test).filter(user.email = 'gamil') # select * from user where id = 'test and email = 'gmail'
# 위 쿼리는 모양이 바로 이해가 안간다. 이럴경우 and_ 를 임포트 해서 filter에 사용하면 된다.(or_ 등도 다 임포트 해야함)
query = session.query(user).filter(and_(user.id = 'test', user.email = 'gmail')

#all()를 통해 가져온 값은 리스트이고 sqlalchemy_results 객체이다.
# 쉽게 생각하면 해당 테이블의 칼럼 값들의 튜플 형태이다.

# 결과값에서 칼럼들의 값을 동적으로 뽑고 싶은경우(또는 넣고싶은 경우)에는 getattr, setattr을 사용한다
getattr(query, id)
setattr(query, id, 'kkk')
# 이거를 왜 언급하냐면 쿼리문의 결과값은 리스트가 아니라서 query['id'] 이런식으로 못가져온다.
# query.id 이렇게 해야 가져와진다. 
# dot point는 변수를 통해서 접근이 안된다
temp = 'id'
query.temp # query.id로 인식을 못함

'파이썬 > flask' 카테고리의 다른 글

flask의 목표  (0) 2018.08.06

1. 한달 2권 책 읽기 : 실패(0.7권)

2. 다이어트 및 운동 가기 : 실패...

def g(x):
    col = 'T'+str(x.t)
    data.at[x.seq-1, col] = x.temp
    return x.t

data['t'] = data.apply(g, axis=1)


당연히 data는 DataFrame구조이다.

(여기서 파라미터 x는 현재 axis=1로 줬으므로 로우별 칼럼들이다. x.t 의 뜻는 t 칼럼을 뜻한다. x.name은 네임 칼럼...)


위 코드를 보면 함수가 무슨 작업을 하든 return은 x.t로 해준다.

그리고 아래에서 data['t'] = 가 명시되어있다.


즉 apply 함수를 통해서 데이터 프레임에 변화를 얼마를 주든 간에 return과 칼럼 명시를 같게 해줘야한다.

안그러면 이상한 결과가 탄생한다.


만일 저렇게 하기 싫다고 한다면

def g(x):
    col = 'T'+str(x.t)
    data.at[x.seq-1, col] = x.temp
    return x

data = data.apply(g, axis=1)


이렇게 바꿔주면된다. 바뀐것은 바로 x.t , data['t'] 가 x, data로 바뀌었다는 것이다.


나는 저 두가지 경우를 섞어서 쓴 적이 있는데

그렇게 할 경우 잘 바뀌다가 제일 마지막에 디멘션 에러가 난다.


'초보 프로그래머' 카테고리의 다른 글

9월의 목표  (0) 2018.09.04
8월 한달 통계...  (0) 2018.09.01
SQL, 내가 원하는 값을 다른 테이블에 집어넣기  (0) 2018.08.26
5일차, 용어정리  (0) 2018.08.12
3일차 용어정리  (0) 2018.08.08

                                     


왼쪽 테이블의 u_name을 오른쪽 테이블에 넣고싶다.

그리고 넣을때의 조건은 b_title이 같은 애들에 한해서 u_name을 넣으려 한다.

즉 오른쪽 테이블의 '아침마다 ~~') 는 Dolphin이 들어가길 원한다.


처음에 이러한 조건을 접근햇을때는 insert를 생각했다.

- insert into 오른쪽테이블(u_name) select u_name from 오른쪽테이블 where 오른쪽테이블.u_name = 왼쪽테이블.u_name

이렇게 할 경우 당연히 안들어가진다. 애초에 뭔가 문제가 많다.

inner join이나 join 등으로 시도해봤으니 이 또한 이상하게 들어간다.


정답은 update였다.

- update 오른쪽 테이블 set u_name =

 (select u_name from 오른쪽테이블 where 오른쪽테이블.u_name = 왼쪽테이블.u_name)


이렇게 할 경우 내가 원하는 칼럼에 원하는 조건에 매칭되게끔 값이 들어가진다.





관련 스택오버플로우 글을 보시려면 클릭하세요


'초보 프로그래머' 카테고리의 다른 글

8월 한달 통계...  (0) 2018.09.01
python, pandas , apply 함수 사용시 주의사항  (0) 2018.08.27
5일차, 용어정리  (0) 2018.08.12
3일차 용어정리  (0) 2018.08.08
2일차 용어정리  (0) 2018.08.08



def solution(str):
	lst = [i for i in str]
	temp = 1;
	flag = 0;
	if len(lst) % 2 != 0 :
			return 0;
	while temp < len(lst):
		if lst[temp-1] == lst[temp]: 
				lst.pop(temp-1)
				lst.pop(temp-1)
				temp = temp-1 if temp >= 2 else temp;
		#		print(lst)
	#			print("temp", temp)
				flag = 1;
				continue;
		else:
				if flag == 1:
						return 0
				else:
						temp +=1;
	num = 1 if len(lst) == 0 else 0;
	return num;


위 코드는 보면 최초에는 flag 값을 안줬다.

이렇게 코드를 실행할 경우 위 알고리즘은 주어진 단어를 끝까지 다 확인을 해야한다 = 시간이 초과된다.

이 문제의 핵심은 단어를 모두 확인하는것이 아니라 오히려 안되는 경우를 얼마나 빠르게 찾아내느냐 인것 처럼 보인다.


그렇기에 내가 접근했던 방식은 한번이라도 글자가 짝지어제거됬을경우 다음에 안되는 경우가 나오면 무조건 아니다 라고 하고 싶었으나

추가적으로 뒤에 더 가서 없어지는 경우가 있을 수도 있음을 알게 되었다.

+ Recent posts