Python과 데이터베이스를 사용하여 등록 앱을 만드는 방법

Python과 데이터베이스를 사용하여 등록 앱을 만드는 방법

Python은 표준 라이브러리에 뛰어난 데이터베이스 지원 기능이 내장되어 있으므로 Django ORM과 같은 외부 프레임워크에 의존하지 않고도 데이터베이스를 만들고 상호 작용할 수 있습니다.

SQLite는 가볍고 Python과 쉽게 통합할 수 있습니다. 간단한 사용자 등록 앱을 사용하여 Python에서 데이터베이스 프로그래밍의 기본 원칙을 알아보세요.

Python에서 데이터베이스를 만드는 방법

이 GitHub 저장소 에서 이 튜토리얼에 사용된 코드를 찾을 수 있습니다.

Python에서 데이터베이스를 생성하고 상호 작용하려면 연결커서 라는 두 가지 주요 항목이 필요합니다 .

연결은 기존 데이터베이스에 연결하거나 새 데이터베이스를 만드는 데 도움이 됩니다. SQLite를 사용하여 Python에서 데이터베이스 연결을 만드는 방법은 다음과 같습니다.

import sqlite3# Connect to a (new) databaseconn = sqlite3.connect('path/to/database.db')# Close the connectionconn.close()

connect () 메소드는 기존 데이터베이스에 대한 경로를 사용합니다. 지정된 경로에 데이터베이스가 없으면 데이터베이스를 생성합니다. 데이터베이스와의 상호작용이 끝나면 데이터베이스 연결을 닫아야 합니다.

커서는 연결된 데이터베이스와 상호 작용하는 데 도움이 됩니다. 커서를 사용하여 Python 프로그램 내에서 SQL 쿼리를 실행합니다. 커서를 만드는 방법은 다음과 같습니다.

cursor = conn.cursor()# Close the cursorcursor.close()

열려 있는 연결 객체에 대해 커서() 메서드를 호출하여 커서를 만들 수 있습니다 .

Python에서 데이터베이스 트랜잭션을 실행하는 방법

커서를 사용하면 SQL 문, 쿼리 또는 스크립트를 실행하여 데이터를 읽거나 쓰거나 데이터베이스 구조를 변경할 수 있습니다.

데이터베이스 트랜잭션을 실행하는 데 사용할 수 있는 세 가지 주요 방법이 있습니다.

  1. 커서.실행 . 이 방법은 단일 SQL 문을 실행합니다. 사용 방법은 다음과 같습니다. 이 코드는 커서의 실행 메소드를 호출하여 SQL 문이 포함된 문자열을 전달합니다. cursor.execute(""" CREATE TABLE IF NOT EXISTS users ( name TEXT, age INTEGER )""")
  2. Cursor.executemany . 이 방법을 사용하면 매번 다른 매개변수를 사용하여 동일한 SQL 문을 두 번 이상 실행할 수 있습니다. SQL 문과 iterable이라는 두 가지 인수를 사용합니다. 이를 위한 좋은 용도는 여러 개체를 데이터베이스에 한 번에 삽입하는 것입니다. 위의 코드는 excutemany 메서드를 사용하여 데이터베이스에 값을 여러 번 삽입합니다.
    data = [ ('Alice', 25), ('Bob', 30), ('Charlie', 22)]cursor.executemany("""INSERT INTO users (name, age) VALUES (?,?)""", data)

    ? _ SQL 문의 자리 표시자. excutemany 메소드는 이를 각 객체에 해당하는 값으로 대체합니다.

  3. 커서.실행스크립트 . 이름에서 알 수 있듯이 이 방법은 SQL 스크립트를 실행합니다. SQL 문을 다른 파일에 작성하고 실행 스크립트 메서드를 사용하여 실행할 수 있습니다. with open("path/to/script.sql") as file: sql_script = file.read()cursor.executescript(sql_script)

Python 및 SQLite3을 사용하여 등록 앱을 구축하는 방법

등록 앱의 논리에는 Python으로 사용자 정보를 가져와 데이터베이스에 저장하는 작업이 포함됩니다. 이 단계에서는 Python 및 SQLite3을 사용하여 간단한 등록 시스템을 만드는 방법을 보여줍니다.

1단계: 기존 데이터베이스에 연결하거나 새 데이터베이스 만들기

앱에 대한 데이터베이스를 생성하거나 기존 데이터베이스에 연결하는 것부터 시작하세요.

import sqlite3conn = sqlite3.connect('database.db')cursor = conn.cursor()# your app's code goes herecursor.close()conn.close()

위의 코드는 연결된 데이터베이스와 상호 작용하기 위한 연결 개체와 커서를 생성합니다.

2단계: 사용자를 위한 테이블 생성

사용자가 등록할 때 제공할 데이터를 저장하려면 테이블이 필요합니다. 커서로 생성하는 방법은 다음과 같습니다.

cursor.execute(""" CREATE TABLE IF NOT EXISTS users ( first_name TEXT, last_name TEXT, email TEXT UNIQUE, password TEXT )""")conn.commit()

이 코드는 데이터베이스에 users 라는 테이블이 없는 경우 이를 생성합니다. 사용자 정보를 보관하기 위해 테이블에 4개의 열을 만듭니다. 이메일 필드는 사용자가 동일한 이메일로 여러 계정을 생성하는 것을 방지하기 위해 고유합니다.

conn.commit 에 대한 호출은 쿼리를 데이터베이스에 커밋하는 데 중요합니다. 그렇지 않으면 데이터베이스가 변경되지 않습니다.

Executescript 메소드를 사용하는 경우 SQL 파일 끝에 COMMIT 키워드를 추가할 수 있으므로 conn.commit을 호출할 필요가 없습니다.

3단계: 사용자 데이터 수집

Python 함수를 사용하면 코드를 쉽게 재사용할 수 있으므로 등록 기능을 처리하는 함수를 만드는 것이 좋습니다. 이 기능은 사용자의 이름, 성, 이메일, 비밀번호를 수집합니다.

def register_user(): first_name = input("Enter your first name: ") last_name = input("Enter your last name: ") email = input("Enter your email: ") password1 = input("Enter your password: ") password2 = input("Confirm your password: ")

4단계: 비밀번호 정확성 확인

사용자가 동일한 비밀번호를 두 번 입력하도록 Register_user 함수를 수정하십시오 . 그렇지 않은 경우 비밀번호를 다시 입력하라는 메시지를 표시해야 합니다. 다음과 같은 루프를 사용하여 이를 달성할 수 있습니다.

def register_user(): first_name = input("Enter your first name: ") last_name = input("Enter your last name: ") email = input("Enter your email: ") while True: password1 = input("Enter your password: ") password2 = input("Confirm your password: ") # Check password correctness if password1 == password2: print("You have successfully registered!") break else: print("Your passwords must match")

이번 변경으로 인해 사용자는 비밀번호가 일치하지 않으면 등록할 수 없습니다.

5단계: 이메일 고유성 확인

사용자 테이블을 생성하는 SQL 문은 이메일 필드를 고유하게 정의합니다. 이는 사용자가 이미 존재하는 이메일로 가입하면 데이터베이스가 오류를 반환한다는 의미입니다. 적절하게 행동하려면 Python 예외를 처리 해야 합니다 .

def register_user(): first_name = input("Enter your first name: ") last_name = input("Enter your last name: ") while True: email = input("Enter your email: ") password1 = input("Enter your password: ") password2 = input("Confirm your password: ") # Check password correctness if password1 == password2: try: print("You have successfully created an account.") break except sqlite3.IntegrityError: print("Error: This email is already registered.") else: print("Your passwords must match.")

이 코드는 try-Exception 블록을 사용하여 이메일 중복으로 인해 발생하는 오류를 처리합니다. 데이터베이스에서 IntegrityError가 발생하면 while 루프가 계속 진행되어 사용자에게 다른 이메일 주소를 입력하라는 메시지가 표시됩니다.

이 샘플 앱의 경우 이메일 주소가 중복되어 IntegrityError가 발생한다고 가정하는 것이 안전합니다. 실제 앱에서는 발생할 수 있는 다른 문제를 해결하기 위해 고급 오류 처리를 사용할 가능성이 높습니다.

6단계: 데이터베이스에 사용자 데이터 삽입

이제 사용자 데이터를 수집하고 확인했으므로 이를 데이터베이스에 추가할 차례입니다. 이를 수행하려면 SQL 쿼리를 사용할 수 있습니다 . Try-Exception 블록을 다음과 같이 수정하세요.

try: cursor.execute(""" INSERT INTO users (first_name, last_name, email, password) VALUES (?,? ,? ,?) """, (first_name, last_name, email, password2)) conn.commit() print("You have successfully created an account.") breakexcept sqlite3.IntegrityError: print("Error: This email is already registered.")

수정된 try-Exception 블록에서 커서는 SQL 삽입 작업을 실행합니다. 마지막으로 conn.commit 메소드는 SQL 작업을 데이터베이스에 커밋합니다.

위의 모든 단계를 수행했다면 사용자를 등록하고 데이터베이스에 저장하는 애플리케이션이 있어야 합니다. SQLite용 DB 브라우저 와 같은 앱을 사용하여 데이터베이스 내용을 볼 수 있습니다.

데이터베이스 테이블의 단일 사용자 레코드를 보여주는 SQLite용 DB 브라우저 앱.

컬렉션 유형 대신 데이터베이스 사용

간단한 데이터베이스의 경우 자체 코드를 롤링하는 것이 더 쉬울 수 있습니다. 그러나 애플리케이션이 성장하고 데이터베이스가 더욱 복잡해지면 Django ORM과 같은 도구를 사용하여 작업을 단순화하는 것이 좋습니다.

낮은 수준의 데이터베이스 기술을 계속 연습하려면 등록 프로그램을 보완하는 로그인 시스템을 구현해 보세요.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다