728x90
반응형
<div class="container-fluid" >
    <div class="row">
        <div class ="col-md-1"></div>
        <div class ="col-md-10" id="board_new"></div>
        <div class ="col-md-1"></div>
    </div>
</div>
728x90
반응형

'기초코드' 카테고리의 다른 글

HTML 기초코드(참고용)  (0) 2023.01.03
HTML, CSS 글자수 1줄, 2줄이상일때 처리방법  (0) 2022.12.02
Git Bash 작동코드  (0) 2022.10.27
OG태그  (0) 2022.10.27
Ajax 기본골격  (0) 2022.10.21
728x90
반응형

오늘 배운 것

login

session

django

flash

jinja2

오늘 느낀 점

위의 개념을 첨봐서

검색해서 열심히 찾고 있습니다.

 

강의에서 배우지 않은 부분들을

다른 팀원들은 능숙하게 쓰고 있어서

따라가지 못한다는 자괴감이 들고 있습니다....

멘탈 챙겨야지ㅜ

728x90
반응형

'일기 > TIL' 카테고리의 다른 글

TIL: Today I Learned 20일차  (0) 2022.12.09
TIL: Today I Learned 19일차  (0) 2022.12.08
TIL: Today I Learned 17일차  (0) 2022.12.06
TIL: Today I Learned 16일차  (0) 2022.12.05
TIL: Today I Learned 15일차  (0) 2022.12.02
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
반응형

오늘 배운 것

RESTful API

팀프로젝트에서 현재 위 단계를 진행하고 있다.

대부분은 회의시간!

+ 혼자 공부하는 SQL

오늘 느낀 점

팀원들과 API에 대해 상의를 나누고,

각자 화면공유해서 깃을 배우고

PULL COMMIT PUSH하면서

버전 관리하는 방법을 실전으로 익혔다.

728x90
반응형

'일기 > TIL' 카테고리의 다른 글

TIL: Today I Learned 19일차  (0) 2022.12.08
TIL: Today I Learned 18일차  (0) 2022.12.07
TIL: Today I Learned 16일차  (0) 2022.12.05
TIL: Today I Learned 15일차  (0) 2022.12.02
TIL: Today I Learned 14일차  (0) 2022.12.01
728x90
반응형

오늘 배운 것

웹개발 종합반 DB관련 총정리 https://pyoja.tistory.com/80

 

★현재까지 배운 DB관련 내용 총정리★

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

pyoja.tistory.com

 

오늘 느낀 점

여러번 봤었는데 너무 대충 들었나보다.

이제 필요에 의해서 천천히 듣고 하나하나 이해하면서 들으니 새로운 느낌이다.

내일은 mysql 모두 들을 예정인데,

아무래도 감기에 걸린 것 같다ㅠㅠ

오늘은 따뜻하게 집에서 쉬어야겠다

728x90
반응형

'일기 > TIL' 카테고리의 다른 글

TIL: Today I Learned 18일차  (0) 2022.12.07
TIL: Today I Learned 17일차  (0) 2022.12.06
TIL: Today I Learned 15일차  (0) 2022.12.02
TIL: Today I Learned 14일차  (0) 2022.12.01
TIL: Today I Learned 13일차  (1) 2022.11.30
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
728x90
반응형

🥅 주간회고의 목적

1. 지난 일주일을 되돌아봄으로써 나의 현재 상태를 파악하기

- 현재 다른 사람들과 비교했을때, DB쪽이 부족하다.

 

2. 더 나은 다음주를 만들기 위해 어떤 부분을 어떻게 채워나갈 지를 고민하는 것

- 현재 프로젝트 기간으로 팀원들과 회의후, 각자 부분을 완성해가고 있는데

   DB쪽이 부족하니 강의 복습과 다른 경로로 mysql을 공부할 예정이다.

 

 이런 질문들을 가지고 접근해보세요

1. 지난 일주일 동안 가장 인상 깊었던 배움에는 뭐가 있었지?

- mysql

 

2. 그 배움까지 다가가는데 어떤 어려움이 있었지?

- 알고리즘도 어려웠지만, mysql은 사실 만져보지도 못했다.

  진도에 뒤쳐지고 있어서 다른 사람들이 하는 대화를 이해하지 못하고 있다.

 

3. 그 과정에서 나는 무엇을 깨달았고, 어떤 감정/생각이 들었었지?

-뒤쳐졌구나.. 따라갈 수 있을까?

 

4. 결과적으로, 현재 나의 상태는?

- 감정적으로 많이 힘들었지만, 아직 많은 기간이 지난건 아니다.

  다른 사람들보다 부족한 부분은 더 시간을 내서 따라가야할 것 같다.

 

5. 이 상태에서 다음 일주일을 더 잘 보내려면 어떻게 해야 할까?

- 정해진 12시간을 넘어서 따로 공부할 예정이다.

728x90
반응형

'일기 > WIL(Sun)' 카테고리의 다른 글

WIL: Week I Learned 6주차 [클론코딩]  (0) 2023.01.02
WIL: Week I Learned 5주차 [TIL특강]  (0) 2022.12.22
WIL: Week I Learned4주차  (0) 2022.12.16
WIL: Week I Learned 2주차  (0) 2022.11.28
WIL: Week I Learned 1주차  (0) 2022.11.20
728x90
반응형

한줄일때

p {
   width: 6rem;
   text-overflow: ellipsis;
   overflow: hidden;
   white-space: nowrap;
}
  • width 값을 지정해야 한다!
  • overflow: hidden;, white-space: nowrap; 으로 설정한다.

두줄이상

p {
   width: 6rem;
   text-overflow: ellipsis;
   overflow: hidden;
   word-break: break-word;
    
   display: -webkit-box;
   -webkit-line-clamp: 2; // 원하는 라인수
   -webkit-box-orient: vertical
}
  • white-space:nowrap을 하면 두줄이상이 될 수 없으므로 word-break: break-word;으로 변경하고,
  • display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;를 추가한다.
728x90
반응형

'기초코드' 카테고리의 다른 글

HTML 기초코드(참고용)  (0) 2023.01.03
부트스트랩에서 화면비율 맞추기  (0) 2022.12.08
Git Bash 작동코드  (0) 2022.10.27
OG태그  (0) 2022.10.27
Ajax 기본골격  (0) 2022.10.21

+ Recent posts