Ubuntu 18.04에서 Python을 사용하여 MariaDB에 데이터를 저장하고 검색하는 방법

Ubuntu 18.04에서 Python을 사용하여 MariaDB에 데이터를 저장하고 검색하는 방법

2022-06-01 last update

24 minutes reading Python Ubuntu 18.04 MariaDB MySQL Databases
저자는 Tech Education Fund 계획의 일부로 기부를 받기로 했다.

소개


Write for DOnations는 유행하는 MySQL 관계 데이터베이스 관리 시스템(DBMS)의 소스 버전으로 데이터에 접근하고 관리하는 SQL 인터페이스를 가지고 있다.그것은 매우 신뢰할 수 있고 관리하기 쉽다. 이것은 현대 응용 프로그램에 서비스를 제공할 수 있는 DBMS의 기본적인 특징이다.Python이 인공지능과 머신러닝 등 기술에서 날로 보급됨에 따라 MariaDB는 Python의 데이터베이스 서버에 좋은 선택을 제공했다.
이 강좌에서는 MySQL 커넥터를 사용하여 Python 응용 프로그램을 데이터베이스 서버에 연결합니다.이 모듈은 응용 프로그램에서 데이터베이스 서버를 조회할 수 있도록 합니다.Ubuntu18.04에서 Python 환경에 MariaDB를 설정하고 Python 스크립트를 작성하여 MariaDB에 연결하고 조회를 실행합니다.

선결 조건


이 안내서를 시작하기 전에 다음이 필요합니다.
  • Ubuntu 18.04 서버는 최소 1GB의 RAM을 가지고 있으며, 다음과 같은 방식으로 설정MariaDB하여 sudo 비root 사용자와 방화벽을 포함한다.
  • 서버에 설치된 Python저희 the Ubuntu 18.04 Initial Server Setup Guide 강좌를 따르세요.
  • 서버에 MariaDB가 설치되어 있습니다.저희 How To Install Python and Set Up a Programming Environment 강좌를 따르세요.이 강좌의 뒷부분에서 사용할 인증 증빙서류 (사용자 이름과 비밀번호) 를 적어 두십시오.
  • 1단계 - 준비 및 설치


    이 단계에서 MariaDB에 데이터베이스와 테이블을 만들 것입니다.
    먼저 터미널을 열고 다음 명령을 사용하여 터미널에서 MariaDB 셸을 입력합니다.
    1. sudo mysql
    MariaDB 셸에 들어가면 터미널 알림이 바뀝니다.이 강좌에서는 Python을 작성하여 workplace 이라는 예시 직원 데이터베이스와 employees 라는 테이블을 연결합니다.
    먼저 workplace 데이터베이스를 만듭니다.
    1. CREATE DATABASE workplace;
    이제 MariaDB에 현재 데이터베이스로 사용workplace을 알려 줍니다.
    1. USE workplace;
    다음 출력을 받게 됩니다. 이 다음에 실행되는 모든 조회는 workplace 데이터베이스에서 적용됩니다.
    Output
    Database changed
    다음은 employees 테이블을 만듭니다.
    1. CREATE TABLE employees (first_name CHAR(35), last_name CHAR(35));
    표 구조에서 매개 변수first_name와 alast_name는 문자열(CHAR으로 지정되고 최대 길이는 35이다.
    그런 다음 MariaDB 셸을 종료합니다.
    1. exit;
    터미널로 돌아가서 MariaDB 인증 자격 증명을 환경 변수로 내보냅니다.
    1. export username="username"
    2. export password="password"
    이 기술을 사용하면 스크립트에 일반 텍스트 형식으로 자격 증명을 추가하는 것을 피할 수 있습니다.
    프로젝트에 대한 환경을 설정했습니다.다음에 스크립트를 작성하여 데이터베이스에 연결할 것입니다.

    2단계 - 데이터베이스에 연결


    이 단계에서 How To Install MariaDB 을 설치하고 데이터베이스를 설정합니다.
    터미널에서 다음 명령을 실행하여 커넥터를 설치합니다.
    1. pip3 install mysql-connector-python
    pip는 Python의 표준 패키지 관리자입니다.mysql-connector-python는 데이터베이스 커넥터 Python 모듈입니다.
    커넥터를 성공적으로 설치한 후 새 파일Python 파일을 생성하고 엽니다.
    1. nano database.py
    열린 파일에서 os 키워드 가져오기MySQL Connectormysql.connector 모듈을 사용합니다.
    데이터베이스회사 명
    import os
    import mysql.connector as database
    
    여기서 import 키워드는 as 코드의 나머지 부분에서 mysql.connector 로 참조된다는 것을 의미합니다.
    다음으로 Python 변수로 내보내는 인증 자격 증명을 초기화합니다.
    데이터베이스회사 명
    . . .
    username = os.environ.get("username")
    password = os.environ.get("password")
    
    database에서 제공한 connect() 방법으로 데이터베이스 연결을 추적하고 구축합니다.이 메서드는 클라이언트 자격 증명을 지정하는 일련의 명명 매개변수를 사용합니다.
    데이터베이스회사 명
    . . .
    connection = database.connect(
        user=username,
        password=password,
        host=localhost,
        database="workplace")
    
    database라는 변수를 설명했습니다. 이 변수는 connection 방법에 대한 호출을 저장합니다.이 방법에서는 database.connect(), user, passwordhost 매개 변수에 값을 부여할 수 있다.사용자 및 암호의 경우 MariaDB 인증 자격 증명을 참조합니다.같은 시스템에서 데이터베이스를 실행하면 기본적으로 호스트는 database 입니다.
    마지막으로 데이터베이스 커서를 얻기 위해 연결상의 localhost 방법을 호출합니다.
    데이터베이스회사 명
    . . .
    cursor = connection.cursor()
    
    커서는 데이터베이스 대상으로 한 그룹의 데이터에서 한 번에 한 줄의 데이터를 검색하고 업데이트합니다.
    다음 단계를 진행하기 위해 파일을 열어 둡니다.
    이제 자격 증명을 사용하여 MariaDB에 연결할 수 있습니다.다음에 스크립트를 사용하여 데이터베이스에 항목을 추가합니다.

    단계 3 - 데이터 추가


    이 단계에서 데이터베이스 커서의 cursor() 방법을 사용하여 데이터베이스에 항목을 추가합니다.
    직원의 이름과 성을 매개 변수로 받아들이는 함수execute()를 정의합니다.함수 내부에서try/except 블록을 만듭니다.커서 객체 뒤에 다음 코드를 추가합니다.
    데이터베이스회사 명
    . . .
    def add_data(first_name, last_name):
        try:
            statement = "INSERT INTO employees (first_name,last_name) VALUES (%s, %s)"
            data = (first_name, last_name)
            cursor.execute(statement, data)
            connection.commit()
            print("Successfully added entry to database")
        except database.Error as e:
            print(f"Error adding entry to database: {e}")
    
    add_data()try 블록을 사용하여 정상적인 프로그램 실행 흐름을 중단하는 이상 (이벤트나 오류) 을 포착하고 처리할 수 있습니다.except 블록 아래에서 try SQL 문을 저장하는 변수로 선언합니다.이 문장은 MariaDB가 열statementINSERT에 추가되었음을 알려줍니다.
    코드 구문은 데이터를 매개 변수로 받아들여 SQL 주입의 기회를 줄입니다.매개 변수가 있는 예처리 문장은 주어진 매개 변수만 예상대로 데이터베이스에 안전하게 전달할 수 있도록 보장합니다.매개 변수는 통상적으로 주입할 수 없다.
    다음은 first_name 함수에서 수신한 매개 변수를 사용하여 last_namethe data module 로 선언합니다.SQL 문과 데이터를 전달하여 add_data 객체에서 execute() 메서드를 계속 실행합니다.cursor 방법을 호출한 후 연결 호출execute() 방법으로 삽입된 데이터를 영구적으로 저장할 수 있습니다.
    마지막으로, 성공하면 성공 메시지를 인쇄합니다.commit() 블록에서 (이상 발생 시에만 실행됨) 는 except 로 선언됩니다.이 변수는 이상 유형이나 스크립트가 중단되었을 때 발생하는 이벤트에 대한 정보를 저장합니다.그리고 database.Error 형식의 오류 메시지를 인쇄하여 tuple 블록을 끝냅니다.
    데이터베이스에 데이터를 추가한 후에 검색해야 합니다.다음 단계에서는 데이터를 검색하는 과정을 안내합니다.

    단계 4 - 데이터 읽어들이기


    이 단계에서 데이터베이스에서 데이터를 검색하기 위해 Python 코드에 SQL 조회를 작성합니다.
    데이터베이스 커서에 같은 e 방법을 사용하면 데이터베이스 항목을 검색할 수 있다.
    함수e를 정의하여 직원의 성을 매개 변수로 사용하면 execute() SQL 쿼리의 get_data() 방법을 사용하여 정확한 행을 찾도록 함수를 호출합니다.
    데이터베이스회사 명
    . . .
    def get_data(last_name):
        try:
          statement = "SELECT first_name, last_name FROM employees WHERE last_name=%s"
          data = (last_name,)
          cursor.execute(statement, data)
          for (first_name, last_name) in cursor:
            print(f"Successfully retrieved {first_name}, {last_name}")
        except database.Error as e:
          print(f"Error retrieving entry from database: {e}")
    
    execute() 블록 아래에서 SELECT SQL 문을 저장하는 변수로 선언합니다.이 문장은 MariaDB가 특정 성씨와 일치할 때 try 테이블에서 열 statementSELECT 을 검색하는 것을 알려준다.
    마찬가지로 매개 변수를 사용하여 SQL 주입 기회를 줄일 수 있습니다.
    마지막 함수에 대해서는 first_name 을 하나의 원조로 표시하고, 그 중 last_name 은 쉼표와 함께 표시됩니다.SQL 문과 데이터를 전달하여 employees 객체에서 data 메서드를 계속 실행합니다.f-string 커서에서 되돌아오는 요소를 반복해서 사용하고 일치하는 항목이 있으면 출력합니다.last_name 블록에서 (이상 발생 시에만 실행됨) 를 execute() 로 선언합니다.이 변수는 발생한 이상 유형에 대한 정보를 저장합니다.그리고 블록을 끝내기 위해 cursor 형식의 오류 메시지를 계속 인쇄합니다.
    마지막 단계에서 정의된 함수를 호출하여 스크립트를 실행합니다.

    단계 5 - 스크립트 실행


    이 단계에서, 스크립트가 실행되고 터미널에서 실행될 수 있도록 마지막 코드를 작성합니다.
    예시 데이터 (문자열) 호출 forexcept 을 사용하여 스크립트를 완성하여 코드가 예상대로 작동하는지 확인합니다.
    여러 항목을 추가하려면 database.Error 를 호출하고 다른 예시 이름을 선택하십시오.
    데이터베이스를 사용한 후 리소스를 낭비하지 않도록 연결을 닫으십시오.e :
    데이터베이스회사 명
    import os
    import mysql.connector as database
    
    username = os.environ.get("username")
    password = os.environ.get("password")
    
    connection = database.connect(
        user=username,
        password=password,
        host=localhost,
        database="workplace")
    
    cursor = connection.cursor()
    
    def add_data(first_name, last_name):
    	try:
        statement = "INSERT INTO employees (first_name,last_name) VALUES (%s, %s)"
        data = (first_name, last_name)
    	  cursor.execute(statement, data)
        cursor.commit()
        print("Successfully added entry to database")
    	except database.Error as e:
        print(f"Error adding entry to database: {e}")
    
    def get_data(last_name):
        try:
          statement = "SELECT first_name, last_name FROM employees WHERE last_name=%s"
          data = (last_name,)
          cursor.execute(statement, data)
          for (first_name, last_name) in cursor:
            print(f"Successfully retrieved {first_name}, {last_name}")
        except database.Error as e:
          print(f"Error retrieving entry from database: {e}")
    
    add_data("Kofi", "Doe")
    get_data("Doe")
    
    connection.close()
    
    오류를 피하기 위해 코드가 정확하게 들여쓰기를 확보하십시오.
    같은 디렉터리에서 e 파일을 만들고 다음 명령을 사용하여 스크립트를 실행합니다.
    1. python3 ./database.py
    다음 출력을 받게 됩니다.
    Output
    Successfully added entry to database Successfully retrieved Kofi, Doe
    마지막으로 항목을 성공적으로 추가했는지 확인하기 위해 MariaDB로 돌아갑니다.
    터미널에서 MariaDB 프롬프트를 엽니다.
    1. sudo mysql
    다음은 MariaDB를 데이터베이스로 전환하고 사용하도록 알려줍니다add_data().
    1. USE workplace;
    성공 메시지 get_data() 를 받은 후 add_data() 표의 모든 항목을 계속 조회합니다.
    1. SELECT * FROM employees;
    출력은 다음과 같습니다.
    Output
    +------------+-----------+ | first_name | last_name | +------------+-----------+ | Kofi | Doe | +------------+-----------+ 1 row in set (0.00 sec)
    요컨대, MariaDB 데이터베이스에 있는 정보를 저장하고 검색하는 스크립트를 작성했습니다.
    필요한 라이브러리를 가져오는 것부터 시작합니다.사용 connection.close() 데이터베이스에 연결하고 사용 database.py 환경에서 인증 자격 증명을 검색합니다.데이터베이스 연결에서 검색 커서는 조회를 실행하고 코드를 workplaceDatabase changed 함수로 구조화합니다.함수를 사용하면 데이터베이스에 데이터를 삽입하고 검색할 수 있습니다.
    삭제를 원한다면 필요한 성명, 문장, 호출을 사용하여 유사한 함수를 구축할 수 있습니다.

    결론


    Ubuntu 18.04에서 Python 스크립트를 사용하여 MariaDB에 데이터베이스 연결에 성공했습니다.여기서부터 데이터베이스에 데이터를 저장해야 하는 Python 프로젝트에서 유사한 코드를 사용할 수 있습니다.이 안내서는 MySQL을 사용하여 개발된 다른 관계 데이터베이스에도 도움이 될 수 있습니다.
    Python을 사용하여 프로젝트를 완료하는 방법에 대한 자세한 내용은 employees loop 의 다른 커뮤니티 강좌를 참조하십시오.