mariaDB 연결 (python vs java)

혜쿰·2023년 10월 16일
0
post-thumbnail

📁python

📝 db 연결

import MySQLdb

conn = MySQLdb.connect(host = '127.0.0.1', user = 'root', password='seoho123', database='test')
print(conn)
conn.close

config = {
    'host':'127.0.0.1',
    'user':'mariadb사용자이름',
    'password':'비밀번호',
    'database':'test',
    'port':3306, # 안쓰면 기본값 3306
    'charset':'utf8',
    'use_unicode':True
}

위와 같은 코드를 통해 DB와 연결이 가능하다. 하지만 이렇게 코드내에 정보를 노출한다면 secure coding 가이드라인에 위배되기 때문에 다른 파일에 빼놓고 사용하는 것이 적절하다.

config = {
   'host':'127.0.0.1',
   'user':'mariadb사용자이름',
   'password':'비밀번호',
   'database':'test',
   'port':3306, # 안쓰면 기본값 3306
   'charset':'utf8',
   'use_unicode':True
}

import pickle

with open(r'mydb.dat',mode='wb') as obj:
   pickle.dump(config, obj)

피클 패키지를 이용해 다음과 같은 정보를 보이지 않는 형태로 저장하고 필요할때마다 꺼내 쓸 수 있다.

import MySQLdb
import pickle

with open(r'mydb.dat', mode='rb') as obj:
   config = pickle.load(obj)

위와 같은 코드를 작성하면 다른파일에 있는 db연결정보를 사용할 수 있다.

📝 자료 읽기

자료 읽기는 select 쿼리문을 이용해서 자료를 읽을 수 있다.

    # 자료 읽기
   sql = 'select code,sang,su,dan from  sangdata'
   cursor.execute(sql)
   
   # 출력1
   for data in cursor.fetchall():
       print(data)
       print('%s %s %s %s'%data)
   print()
   
   # 출력2
   for r in cursor:
       # print(r)
       print([0],r[1],r[2],r[3])
   print()
   
   # 출력3
   for (code,sang,su,dan) in cursor:
       print(code,sang,su,dan)
   print()
   
   # 출력 3-1
   for a, kbs, su, 단가 in cursor:
       print(a,kbs,su,단가)
   

1
(1, '장갑', 3, 10000)
1 장갑 3 10000
(2, '물티슈', 10, 2000)
2 물티슈 10 2000
(3, '가죽장갑', 10, 50000)
3 가죽장갑 10 50000
(4, '가죽점퍼', 5, 650000)
4 가죽점퍼 5 650000
(5, '지우개', 12, 1000)
5 지우개 12 1000
2
[0] 장갑 3 10000
[0] 물티슈 10 2000
[0] 가죽장갑 10 50000
[0] 가죽점퍼 5 650000
[0] 지우개 12 1000
3
1 장갑 3 10000
2 물티슈 10 2000
3 가죽장갑 10 50000
4 가죽점퍼 5 650000
5 지우개 12 1000
4
1 장갑 3 10000
2 물티슈 10 2000
3 가죽장갑 10 50000
4 가죽점퍼 5 650000
5 지우개 12 1000

출력 결과는 다음과 같이 나온다.

📝 자료 수정

자료 수정은 update 쿼리문을 이용하면 된다.

sql = "update sangdata set sang=%s,su=%s,dan=%s where code=%s"
    sql_data = ('python',12,50000,6)
    result = cursor.execute(sql, sql_data)
    print(result)
    conn.commit()

📝 자료 추가

자료 추가는 insert 쿼리문을 이용하면 된다.

sql = "insert into sangdata values(%s,%s,%s,%s)"
    sql_data = 6,'신상1',5,'5000'
    cursor.execute(sql,sql_data)
    conn.commit()

📝 자료 삭제

자료 삭제는 delete 쿼리문을 이용하면 된다.

 # 방법1
    sql = "delete from sangdata where code=%s"
    count = cursor.execute(sql, code)
    
    # 방법2
    
    sql = "delete from sangdata where code ='{0}' ".format(code)
    count = cursor.execute(sql)
    if count != 0:
        print('삭제 성공')
        conn.commit()
    else:
        print('삭제 실패')

📁java

📝 db 연결

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ReadDataExample {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        String jdbcUrl = "jdbc:mysql://localhost:3306/your_database_name";
        String username = "your_username";
        String password = "your_password";

        try {
            // 데이터베이스 연결
            connection = DriverManager.getConnection(jdbcUrl, username, password);
            
            //...
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 연결 및 리소스 정리
            try {
                if (resultSet != null) resultSet.close();
                if (statement != null) statement.close();
                if (connection != null) connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

자바도 파이썬처럼 db연결정보를 다른 파일로 빼서 사용할 수 있지만 그 과정은 생략하도록 하겠다.

📝 자료 읽기

자료 읽기는 select 쿼리문을 이용해서 자료를 읽을 수 있다.

statement = connection.createStatement();
            String query = "SELECT * FROM your_table_name";
            resultSet = statement.executeQuery(query);
            
            // 결과 출력
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                System.out.println("ID: " + id + ", Name: " + name);
            }

📝 자료 수정

자료 수정은 update 쿼리문을 이용하면 된다.

 statement = connection.createStatement();
            String query = "UPDATE your_table_name SET name = 'NewName' WHERE id = 1";
            int rowsUpdated = statement.executeUpdate(query);

📝 자료 추가

자료 추가는 insert 쿼리문을 이용하면 된다.

statement = connection.createStatement();
            String query = "INSERT INTO your_table_name (name) VALUES ('NewName')";
            int rowsInserted = statement.executeUpdate(query);

📝 자료 삭제

자료 삭제는 delete 쿼리문을 이용하면 된다.

statement = connection.createStatement();
            String query = "DELETE FROM your_table_name WHERE id = 1";
            int rowsDeleted = statement.executeUpdate(query);

0개의 댓글