728x90
반응형

mysql

# 데이터베이스를 만들겠다.
create database firstBase;

# 해당 데이터 베이스를 사용하겠다
use firstBase;

# 테이블 생성
create table student(
    id int primary key auto_increment,  #칼럼명 자료형 제약조건 , (primary key -> (not null&& unique) auto_increment-> 자동으로 숫자를 늘려준다 ex) 1,2,3,4
    name varchar(50),                   #칼럼명 자료형 (varchar(50) => 문자를 50자 까지)
    age int,
    email varchar(50)
);
#city 테이블 생성
create table city(
    id int primary key auto_increment,
    city_name varchar(50)
);

#검색기능
select *                                                            #모든 걸 선택 찾겠다 ->
from student;                                                       #student 테이블에서.

select*
from city;

#테이블에 자료 추가
insert into student(name,age,email) values('김민수',92,'저도 몰라요');  #student(컬럼명1,컬럼명2,...) values(앞에 적은 컬럼명의 값! 같은 순서대로) 일부 컬럼만 선택해서 값 입력 가능
insert into student values(null,'aa',12,'adsa');                   #앞의 컬럼명 조건을 안 주면 values뒤에 모든 컬럼에 대한 값을 다 넣어야한다.
# city table data insert
insert into city values(null,'서울');
insert into city values(null,'경기');

#테이블에 칼럼추가
alter table student add city_name varchar(50);                      # student 테이블에 칼럼 추가
alter table city add city_id int;                                   # city 테이블에 칼럼 추가

# student에 city_id에 not null 조건을 주기 위해 일단 student에 city_id에 데이터 삽입
update student set city_id =1;

#테이블에 제약조건 추가
alter table student add constraint foreign key(city_id) references city(city_id);            #제약조건 추가 foreign key 넣기
alter table student modify city_id int not null;                                             #student 테이블에 city_id칼럼에 not null 조건 추가

# 삭제문
delete from student where id = 1;                                  #where 조건문 -> where 컴럼명 = 컬럼값;


# 포린키명 변경
# alter table student
#     drop foreign key "기존키명";
#
# alter table student
#     add constraint "바꿀키명"
#         foreign key (city_id) references city (city_id);

# 조인문
select s.name, c.city_name
from student s left join city c on s.city_id = c.city_id
where s.name = '김민수';

CRUD

from flask import Flask, render_template, request, jsonify
app = Flask(__name__)

import pymysql
db = pymysql.connect(host="localhost",
                     port=3306,
                     user="lee",
                     db='aa',
                     password='spartatest',
                     charset='utf8')
# db = config.DB_URL

curs = db.cursor()

@app.route("/members/lee/get", methods=["GET"])
def lee_sl():
  sql = """select * from student"""

  curs.execute(sql)  # execute안에 있는 sql쿼리문을 실행시킨다.
  curs.fetchall()
  db.commit()
  print('get 완료')
  return render_template("index.html")

@app.route("/members/lee/up", methods=["POST"])
def lee_up():
  datas = request.get_json()
  name = datas['name']
  id = datas['id']
  sql = """update student set name='%s' where id = '%s'""" %(name,id)
  curs.execute(sql)

  curs.fetchall()
  db.commit()
  print("업데이트 완료")
  return render_template("index.html")

@app.route("/members/lee/in", methods=["POST"])
def lee_a():
  params = request.get_json()
  name = params['name']
  age = params['age']
  email = params['email']
  city_id = params['city_id']

  sql ="""insert into student values (null,'%s' , '%s' ,'%s' , '%s')""" %(name,age,email,city_id)

  curs.execute(sql)  # execute안에 있는 sql쿼리문을 실행시킨다.
  curs.fetchall()
  db.commit()
  print('insert 완료')
  return render_template("index.html")

@app.route("/members/lee/del", methods=["Delete"])
def lee_d():
  params = request.get_json()
  id = params['id']
  sql = """delete from student where id = '%s'""" %(id)

  curs.execute(sql)  # execute안에 있는 sql쿼리문을 실행시킨다.
  curs.fetchall()
  db.commit()
  print('삭제완료')
  return render_template("index.html")



if __name__ == '__main__':
    app.run('0.0.0.0', port=5000, debug=True)
728x90
반응형

'코딩공부 > DB' 카테고리의 다른 글

★현재까지 배운 DB관련 내용 총정리★  (0) 2022.12.05
728x90
반응형

Ajax

- 웹 페이지 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있습니다.

  즉 Ajax를 이용하면 백그라운드 영역에서 서버와 통신하여, 그 결과를 웹 페이지의 일부분에만 표시할 수 있습니다.

<script>
    $.ajax({
        type: "GET",
        url: "http://spartacodingclub.shop/sparta_api/weather/seoul",
        data: {},
        success: function (response) {
            let temp = response['temp']
            $('#temp').text(temp);
        }
    })
</script>

Requests

Requests란 Python용 HTTP 라이브러리이다.
Python에서 특정 웹사이트에 HTTP 요청을 보내는 모듈이라고 생각하면 될 것 같다.
좀 더 쉽게 말해서 특정 웹사이트에 HTTP 요청을 보내 HTML 문서를 받아올 수 있는 라이브러리이다.
근데 정확히 말하면 얘가 가져오는 HTML 문서는 문서가 아닌 그냥 단순한 String이고,
뒤에서 배우는 BeautifulSoup에 의해 살아있는 HTML 문서로 바뀌게 된다. (함께 크롤링에 자주 쓰임)

 

import requests   #requests 라이브러리 설치 필요

r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
rjson = r.json()

rows = rjson['RealtimeCityAir']['row']

 

BS4 (BeautifulSoup)

HTML정보로 부터 원하는 데이터를 가져오기 쉽게,
비슷한 분류의 데이터별로 나누어주는(parsing) 파이썬 라이브러리

import requests
from bs4 import BeautifulSoup

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

#copy selector
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
#old_content > table > tbody > tr:nth-child(3) > td.title > div > a

movies = soup.select('#old_content > table > tbody > tr') #중복된 앞부분

for movie in movies:
	a = movie.select_one('td.title > div > a') #중복된 뒷부분
    if a is not None:
    	print(a.text)  #영화의 제목만 가져온다

 

dnspython, pymongo

dnspython는 DNS패키지로,

도메인을 받아 뭔가를 송수신할 때 사용됩니다!

pymongo 패키지가 동작하려면 필요한 패키지입니다.

(도메인 이름 시스템(DNS)은 사람이 읽을 수 있는 도메인 이름(예: www.amazon.com

 기계가 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환합니다.)

from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.dbsparta

doc = {
	'name':'bob',
    'age':27
 }
 
 db.users.insert_one(doc)

몽고디비 코드요약

# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)

# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})

# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))

# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

# 지우기 - 예시
db.users.delete_one({'name':'bobby'})

 

Flask

서버를 구동시켜주는 편한 라이브러리

Flask는 홈페이지에서도 “micro” 프레임워크라는 점을 강조하고 있다.

즉, 최소한의 구성 요소와 요구 사항을 제공하기 때문에 시작하기 쉽고 필요에 따라 유연하게 사용할 수 있다.

 

render_template를 통해 HTML 파일을 localhost:5000 로 불러올 수 있다.

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def home():
   return render_template('main.html')

if __name__ == '__main__':
   app.run('0.0.0.0',port=5000,debug=True)

 

 

html Ajax와 app.py GET 연결

from flask import Flask, render_template, request, jsonify
app = Flask(__name__)

# HTML 파일 출력
@app.route('/')
def home():
   return render_template('main.html')

# GET요청 확인 (request, jsonify) 필요
@app.route('/test', methods=['GET'])
def test_get():
   title_receive = request.args.get('title_give')
   print(title_receive)
   return jsonify({'result':'success', 'msg': '이 요청은 GET!'})

if __name__ == '__main__':
   app.run('0.0.0.0',port=5000,debug=True)
    function hey() {
        $.ajax({
            type: "GET",
            url: "/test?title_give=봄날은간다",
            data: {},
            success: function (response) {
                console.log(response)
            }
        })
    }

 

html Ajax와 aap.py POST 연결

@app.route('/test', methods=['POST'])
    def test_post():
    title_receive = request.form['title_give']
    print(title_receive)
    return jsonify({'result':'success', 'msg': '이 요청은 POST!'})
    function hey() {
        $.ajax({
            type: "POST",
            url: "/test",
            data: {title_give: '봄날은간다'},
            success: function (response) {
                console.log(response)
            }
        })
    }

GET POST 응용버전(HTML)

   <!--  로그인하면 보여줌 (GET)  -->
        $(document).ready(function (){
                show_order();
        });

        function show_order() {
        $.ajax({
            type: 'GET',
            url: '/test',
            data: {},
            success: function (response) {
            let rows = response['orders']
            for (let i = 0; i < rows.length; i++){
                let bd_title = rows[i]['bd_title']
                let bd_content = rows[i]['bd_content']
                let user_nk = rows[i]['user_nk']

                let temp_html =`<h3 class="card-title">${bd_title}</h3>
                                <p class="card-text">${bd_content}</p>
                                <hr>
                                <p class="nick">${user_nk}</p>`
                $('.card-body').append(temp_html)
            }

            }
        });
    }

    <!-- 로그인에 붙여둠 (POST)  -->
    function test_post() {
        let bd_title = $('.card-title').val()
        let bd_content = $('.card-content').val()
        let user_nk = $('.nick').val()

        $.ajax({
            type: 'POST',
            url: '/test',
            data: { bd_title_give: bd_title, bd_content_give: bd_content, user_nk_give: user_nk  },
            success: function (response) {
                alert(response['msg'])
                window.location.reload()
            }
        });
    }

GET POST 응용버전(파이썬)

@app.route('/test', methods=['GET'])
def test_get():
   order_list = list(db.test.find({}, {'_id': False}))
   return jsonify({'orders':order_list})

# POST요청 확인 (request, jsonify) 필요
@app.route('/test', methods=['POST'])
def test_post():
   bd_title = request.form['bd_title_give']
   bd_content  = request.form['bd_content_give']
   user_nk = request.form['user_nk_give']

   doc = {
      'bd_title' : bd_title,
      'bd_content' : bd_content,
      'user_nk' : user_nk
   }
   db.test.insert_one(doc)

   return jsonify({'msg': '작성 완료!'})
728x90
반응형

'코딩공부 > DB' 카테고리의 다른 글

mysql 데이터베이스 기본 명령어  (0) 2022.12.06

+ Recent posts