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('삭제 실패')
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);