[대구시/MS 협력 개발일지10일차] Python 기초실습 - flask,데이터베이스 python연동2 (2022.04.01)

jeounghoonyang·2022년 4월 1일
post-thumbnail

> 1. 학습내용

  • Glitch 환경에서 SQLite3 프로그램을 사용하여 데이터베이스를 생성
  • Python 데이터베이스 연동
  • read,creat,delete를 SQLite 통해 적용
  • Python 프로그램에 부트스트랩 적용과 더불어 앞서 배운 데이터베이스 내용과 연결
  • 2주간 받은 교육 간략히 복습
  • from flask import Flask, request, redirect
    import sqlite3
    app = Flask(__name__)
    topics = [
      {"id":1, "title":"html", "body":"html is ...."},
      {"id":2, "title":"css", "body":"css is ...."},
      {"id":3, "title":"js", "body":"js is ...."}
    ]
    def template(content, id=None):
      contextUI = ''
      if id != None:
        contextUI = '<input type="submit" value="delete" class="btn btn-dark">'
      conn = sqlite3.connect('db.sqlite3')
      cs = conn.cursor()
      cs.execute('SELECT * FROM topics')
      topics = cs.fetchall()
      conn.close()
      liTags = ''
      for topic in topics:
        liTags = liTags + f'<li><a href="/read/{topic[0]}/">{topic[1]}</a></li>'
      return f'''
      <html>
        <head>
          <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
          <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
          <style>
            h1{{
              border-bottom:10px solid green;
            }}
            h1>a{{
              text-decoration:none;
            }}
          </style>
        </head>
        <body class="container">
          <input type="button" value="night">
          <h1><a href="/">WEB</a></h1>
          <ol>
            {liTags}
          </ol>
          {content}
          <form action="/delete/{id}/" method="POST">
            <div class="btn-group" role="group" aria-label="Basic example">  
              <a href="/create/" class="btn btn-dark">create</a>
              {contextUI}
            </div>
          </form>     
        </body>
      </html>
    @app.route("/")
    def index():
      return template('<h2>Welcome</h2>Hello, WEB!')
    @app.route("/read/<int:id>/")
    def read(id):
      conn = sqlite3.connect('db.sqlite3')
      cs = conn.cursor()
      cs.execute('SELECT * FROM topics WHERE id=?', (id,))
      topic = cs.fetchone()
      conn.close()
      title = topic[1]
      body = topic[2]
      return template(f'<h2>{title}</h2>{body}', id)
    @app.route('/create/')
    def create():
      content = '''
        <form action="/create_process/" method="POST">
          <p><input type="text" name="title" placeholder="title"></p>
          <p><textarea name="body" placeholder="body"></textarea></p>
          <p><input type="submit" value="create"></p>
        </form>
      return template(content)
    @app.route('/create_process/', methods=['POST'])
    def create_process():
      title = request.form['title']
      body = request.form['body']
      conn = sqlite3.connect('db.sqlite3')
      cs = conn.cursor()
      cs.execute('INSERT INTO topics (title, body) VALUES(?,?)',(title,body))
      id = cs.lastrowid
      conn.commit()
      conn.close()
      return redirect(f'/read/{id}/')
    @app.route('/delete/<int:id>/', methods=['POST'])
    def delete(id):  
      conn = sqlite3.connect('db.sqlite3')
      cs = conn.cursor()
      cs.execute('DELETE FROM topics WHERE id = ?',(id,))
      conn.commit()
      conn.close()  
      return redirect('/')
  • 생활코딩 강의 참조

> 2. 어려웠던 내용

  • 복습 중이지만 아직까진 어려웠던 내용은 없었고 추후 다시 수정 예정

> 3. 해결방법

  • 이고잉강사님의 강의들을 포함한 다양한 사람들의 여러 무료강의들과 검색을 통한 자료들을 토대로 이해가 되고 암기를 할 수 있을 때까지 보고 또 보는게 "BEST"

> 4. 학습소감

  • 8일차와 9일차에 비하면 내용이 조금 적었던 편이라 그나마 수월하게 들을 수 있었다. 거기다가 이전에 배운 내용들을 복습하면서 내용을 합쳐 간단한 코딩을 통해 사이트를 만들어보는 것 또한 '내가 새로운 무언가를 이만큼 또 알게 되었구나' 라는 뿌듯함이 들어 좋았다. 지속적으로 배운 내용들을 복습하고 또 추가적인 내용들도 찾아보고 정리하며 다듬고 덧붙이며 '프로그램 분야에서의 내공'이라는 근사한 집을 내면에 짓고 싶다.
profile
배운 능력으로 세계에 도움이 되는 사람이 되고 싶습니다. i want to be such a person who can help someone with my abilities which i've developed by myself.

0개의 댓글