Python MySQL-데이터 선택

SELECT 쿼리를 사용하여 MySQL의 테이블에서 데이터를 검색 / 가져올 수 있습니다. 이 쿼리 / 문은 지정된 테이블의 내용을 표 형식으로 반환하며 결과 집합으로 호출됩니다.

통사론

다음은 SELECT 쿼리의 구문입니다-

SELECT column1, column2, columnN FROM table_name;

MySQL에서 cricketers_data라는 이름으로 테이블을 만들었다 고 가정합니다.

CREATE TABLE cricketers_data(
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Date_Of_Birth date,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);

그리고 INSERT 문을 사용하여 5 개의 레코드를 삽입했다면-

insert into cricketers_data values(
   'Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India');
insert into cricketers_data values(
   'Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica');
insert into cricketers_data values(
   'Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka');
insert into cricketers_data values(
   'Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India');
insert into cricketers_data values(
   'Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India');

다음 쿼리는 테이블에서 FIRST_NAME 및 Country 값을 검색합니다.

mysql> select FIRST_NAME, Country from cricketers_data;
+------------+-------------+
| FIRST_NAME | Country     |
+------------+-------------+
| Shikhar    | India       |
| Jonathan   | SouthAfrica |
| Kumara     | Srilanka    |
| Virat      | India       |
| Rohit      | India       |
+------------+-------------+
5 rows in set (0.00 sec)

또한 다음과 같이 열 이름의 * instated를 사용하여 각 레코드의 모든 값을 검색 할 수 있습니다.

mysql> SELECT * from cricketers_data;
+------------+------------+---------------+----------------+-------------+
| First_Name | Last_Name  | Date_Of_Birth | Place_Of_Birth | Country     |
+------------+------------+---------------+----------------+-------------+
| Shikhar    | Dhawan     | 1981-12-05    | Delhi          | India       |
| Jonathan   | Trott      | 1981-04-22    | CapeTown       | SouthAfrica |
| Kumara     | Sangakkara | 1977-10-27    | Matale         | Srilanka    |
| Virat      | Kohli      | 1988-11-05    | Delhi          | India       |
| Rohit      | Sharma     | 1987-04-30    | Nagpur         | India       |
+------------+------------+---------------+----------------+-------------+
5 rows in set (0.00 sec)

Python을 사용하여 MYSQL 테이블에서 데이터 읽기

모든 데이터베이스에 대한 읽기 작업은 데이터베이스에서 유용한 정보를 가져 오는 것을 의미합니다. 다음을 사용하여 MYSQL에서 데이터를 가져올 수 있습니다.fetch() mysql-connector-python에서 제공하는 메소드.

cursor.MySQLCursor의 클래스, 즉 세 가지 방법을 제공합니다fetchall(), fetchmany() 과, fetchone() 어디,

  • 그만큼 fetchall()메서드는 쿼리 결과 집합의 모든 행을 검색하고 튜플 목록으로 반환합니다. (몇 개의 행을 검색 한 후 이것을 실행하면 나머지 행을 반환합니다).

  • 그만큼 fetchone() 메서드는 쿼리 결과에서 다음 행을 가져 와서 튜플로 반환합니다.

  • 그만큼 fetchmany() 메소드는 fetchone ()과 유사하지만 단일 행 대신 쿼리의 결과 세트에서 다음 행 세트를 검색합니다.

Note − 결과 집합은 커서 개체를 사용하여 테이블을 쿼리 할 때 반환되는 개체입니다.

rowcount − 이것은 읽기 전용 속성이며 execute () 메서드의 영향을받은 행 수를 반환합니다.

다음 예제는 SELECT 쿼리를 사용하여 EMPLOYEE 테이블의 모든 행을 가져오고 처음에 얻은 결과 집합에서 처음에는 fetchone () 메서드를 사용하여 첫 번째 행을 검색 한 다음 fetchall () 메서드를 사용하여 나머지 행을 가져옵니다.

import mysql.connector

#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving single row
sql = '''SELECT * from EMPLOYEE'''

#Executing the query
cursor.execute(sql)

#Fetching 1st row from the table
result = cursor.fetchone();
print(result)

#Fetching 1st row from the table
result = cursor.fetchall();
print(result)

#Closing the connection
conn.close()

산출

('Krishna', 'Sharma', 19, 'M', 2000.0)
[('Raj', 'Kandukuri', 20, 'M', 7000.0), ('Ramya', 'Ramapriya', 25, 'M', 5000.0)]

다음 예제는 fetchmany () 메소드를 사용하여 EMPLOYEE 테이블의 처음 두 행을 검색합니다.

import mysql.connector

#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving single row
sql = '''SELECT * from EMPLOYEE'''

#Executing the query
cursor.execute(sql)

#Fetching 1st row from the table
result = cursor.fetchmany(size =2);
print(result)

#Closing the connection
conn.close()

산출

[('Krishna', 'Sharma', 19, 'M', 2000.0), ('Raj', 'Kandukuri', 20, 'M', 7000.0)]