오늘은 람다를 사용해서 CRUD를 해보는 연습을 했다.
여기서 python을 통해서 mySQL을 사용하는데 실습코드에 모르는 부분이 많아서 알아보게 되었다.
pymysql을 사용.
connection = pymysql.connect(
host=secrets['host'],
user=secrets['username'],
password=secrets['password'],
db='mydb',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
위 코드를 통해서 mydb라는 데이터베이스와 연결(connect)를 했다.
user: user name
passwd: 설정한 패스워드
host: DB가 존재하는 host
db: 연결할 데이터베이스 이름
charset: 인코딩 설정
AWS Lambda 에서 시크릿키도 설정하고 뭐 이것저것 해서 ['host'],['username'] 등을 알아서 가져 오는것 같다.
우선 이렇게 DB에 연결을 하고 나서 CRUD를 해보았다.
그 중에 cursor.execute()라는 부분에 SQL이 사용되길래 궁금해서 알아보았다.
cursor.execute("select idx, title, regDate from bbs")
이런 식으로 execute() 에 사용하고자 하는 쿼리를 작성하면 되는 것 같다.
또, 다른 코드들과는 다르게 자동으로 저장되지 않아서 commit도 해줘야 한다고 하셨다.
.commit()
Insert, Update, Delete 를 사용하는 것 처럼 DB에 변경이 생기면 쿼리문 다음에 XXX.commit()을 작성해서 저장을 해주어야 한다.
이부분이 파이썬에서 사용하는 SQL문법인것 같다.
자바/스프링에서 배웠었던 JPA와 동일한 것으로 보여진다. 처음에 실습을 해야해서 CRUD에 해당하는 코드를 직접 작성했어야 했는데 위와 같은 문법들을 몰라서 작성을 하지 못했었다..
또 알지 못했던게 event[][]
이 부분인데
json.loads(event['body'])
event['queryStringParameters']['type']
event['httpMethod'] == 'OPTIONS':
paramWord = event['queryStringParameters']['word']
idx = event['queryStringParameters']['idx']
등등... 꽤나 많이 나오던 문법이고, .execute가 나오기 전이나 if,try,def 등을 선언하고 나서 나온다.
queryStringParameters 이 부분은 event['queryStringParameters']['파라미터 이름']
이런 식으로 작성하는 것 같고, 그렇게 되었을 때 word나 idx,type을 받아오는 것 같다...
아직 정확하게 이해는 못했지만 대강
paramWord = event['queryStringParameters']['word']
paraWord 는 ['queryStringParameters']라는 이벤트고 그 중에 ['word']를 뜻한다.
라는 의미인 듯 하다;;;
문법을 알고 보니 어떤 식으로 작성해야 하는지 알긴했는데.. 직접 처음부터 작성할 수 있을까..?
여러 언어를 한번에 배우다 보니 조금 어렵다는 생각이 든다 ㅠ_ㅠ
우선 하나라도 제대로 하고 싶은데.. 다양한 관점에서 바라보는 것도 나쁘지는 않은 것 같기도???
찔끔찔끔 이해가 되고 있는데
가랑비에 옷 젖는지 모른다고 하다보면 더 공부가 될 것 같다.
오 오늘의 한 줄 뭔가 문학적이네요 크