
Kursor adalah objek yang membantu mengeksekusi kueri dan mengambil catatan dari database. Kursor memainkan peran yang sangat penting dalam menjalankan kueri. Artikel ini akan mempelajari beberapa informasi mendalam tentang metode eksekusi dan cara menggunakan metode tersebut dengan python.
Kita dapat membuat objek kursor melalui mysql.
Buat objek kursor:
#python cursor_object.py
#import the library
import mysql.connector
# creating connection
conn = mysql.connector.connect(
host="localhost",
user="sammy",
password="password"
)
#print the connection
print(conn)
# import the cursor from the connection (conn)
mycursor = conn.cursor()
#print the mycursor
print(mycursor)
Keluaran: python cursor_object.py
<mysql.connector.connection_cext.CMySQLConnection object at 0x7f520da04be0>
CMySQLCursor: (Nothing executed yet)
Baris 4: Kami mengimpor kelas konektor dari MySql.
Baris 7 hingga 11: Kami mengakses metode connect melalui kelas konektor, yang telah kami impor ke dalam program kami. Sekarang, kami meneruskan parameter koneksi kami ke metode koneksi. Nama user dan password akan berbeda sesuai dengan proses instalasi Anda.
Baris 16: Kami mengimpor metode kursor dari objek koneksi yang dibuat (sambungan) dan membuat objek kursor (kursor saya).
Baris 18: Sekarang, kita hanya mencetak mycursor ini yang kita buat pada baris 16, dan outputnya menunjukkan bahwa CMySQLCursor: (Belum ada yang dieksekusi).
Metode cursor.execute():
Metode eksekusi () membantu kita untuk mengeksekusi kueri dan mengembalikan catatan sesuai dengan kueri. Sintaks dari fungsi execute() adalah:
execute (query, args = None)
Parameter:
- query: Ini harus berupa tipe string.
- Arguments: Secara default, argumennya adalah None karena terkadang kita hanya dapat melewatkan kueri seperti a SELECTkueri yang mengambil catatan dan tidak memerlukan nilai apa pun. Jadi itulah alasanargs=Nonesecara default. Tetapi jika kita ingin melewatkan nilai dalam kasusINSERT query, maka tipe argumen harus berupa tuple, list, atau dict saja.
Pengembalian:
- Ini akan mengembalikan hitungan jumlah baris yang terpengaruh selama kueri.
Jenis pengembalian:
- Tipe yang dikembalikan akan berupa bilangan bulat (int).
Sekarang, kita akan menunjukkan beberapa contoh.
Contoh_1: gunakan metode eksekusi () hanya untuk kueri
#python simple_execute_function.py
#import the library
import mysql.connector
# creating connection
conn = mysql.connector.connect(
host="localhost",
user="sammy",
password="password",
database ="dbTest"
)
# import the cursor from the connection (conn)
mycursor = conn.cursor()
mycursor.execute("SELECT * FROM MOVIE")
# iterate over the result
for row in mycursor:
print(row)
# we close the cursor and conn both
mycursor.close()
conn.close()
Output: python simple_execute_function.py
(1, 'Bruce Almighty', 2003)
(2, 'Kung Fu panda', 2014)
(3, 'Kung Fu panda', 2014)
(4, 'Frozen', 2014)
(5, 'Frozen2', 2020)
(6, 'Iron Man', 2013)
Baris 11: Kami menambahkan satu nama parameter lagi ke database. Sekarang, kode python kami akan mencoba terhubung dengan database MySql (dbTest) ini saja.
Baris 15: Kami membuat objek kursor (mycursor).
Baris 17: Kami menjalankan kueri SELECT sederhana melalui fungsi eksekusi.
Baris 20 hingga 21: Kami mengulangi hasil yang diambil oleh objek kursor dan memperhatikan bahwa semua catatan dikembalikan dalam tupel.
Contoh_2: gunakan metode eksekusi () untuk menyisipkan catatan tunggal
#python insert_record_execute.py
#import the library
import mysql.connector
# creating connection to the database
conn = mysql.connector.connect(
host="localhost",
user="sammy",
password="password",
database="dbTest"
)
mycursor = conn.cursor()
# execute the query with their record value
query = 'INSERT INTO MOVIE (id, name, year) VALUES (%s, %s, %s)'
val = (7, "Merlin", 2001)
mycursor.execute(query,val)
# we commit(save) the records to the table
conn.commit()
print(mycursor.rowcount, "record(s) inserted.")
Output: python insert_record_execute.py
mysql> use dbTest;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from MOVIE;
+----+----------------+------+
| id | name | year |
+----+----------------+------+
| 1 | Bruce Almighty | 2003 |
| 2 | Kung Fu panda | 2014 |
| 3 | Kung Fu panda | 2014 |
| 4 | Frozen | 2014 |
| 5 | Frozen2 | 2020 |
| 6 | Iron Man | 2013 |
| 7 | Merlin | 2001 |
+----+----------------+------+
7 rows in set (0.00 sec)
mysql>
Baris 11: Kami menambahkan satu nama parameter lagi ke database. Sekarang, kode python kami akan mencoba terhubung dengan database MySql (dbTest) ini saja.
Baris 17: Kami membuat kueri kami untuk data penyisipan.
Baris 18: Kami membuat nilai untuk kueri itu untuk dimasukkan ke dalam tabel.
Baris 21: Kami menggunakan fungsi execute () dan meneruskan kueri dan val kepada mereka sebagai parameter.
Dan output di atas menunjukkan bahwa record berhasil dimasukkan ke dalam tabel.
Method | Method Details |
---|---|
fetchone() | This will return the single row from the result, and if there is no record to return, then it will return as None. |
fetchmany([size]) | This will return the number of rows as size specified from the result sets, and if there is no record to return, then it will return []. default size is 1. |
fetchall() | Returns the all or remaining rows from the result set. |
Mari kita jelaskan metode di atas menggunakan contoh.
#python cursor_method.py
#import the library
import mysql.connector
# creating connection
conn = mysql.connector.connect(
host="localhost",
user="sammy",
password="password",
database ="dbTest"
)
# import the cursor from the connection (conn)
mycursor = conn.cursor()
mycursor.execute("SELECT * FROM MOVIE")
print(mycursor.fetchone()) # fetch the first row
print(mycursor.fetchmany(4)) # fetch the next 2 rows
print(mycursor.fetchall()) # fetch all the remaining rows
print(mycursor.fetchmany()) # the result set is now empty
# we close the cursor and conn both
mycursor.close()
conn.close()
Keluaran: python cursor_method.py
(1, 'Bruce Almighty', 2003)
[(2, 'Kung Fu panda', 2014), (3, 'Kung Fu panda', 2014), (4, 'Frozen', 2014), (5, 'Frozen2', 2020)]
[(6, 'Iron Man', 2013), (7, 'Merlin', 2001)]
[(6, 'Iron Man', 2013)]
Baris 19: Metode fetchone () mengambil record pertama dari kumpulan hasil.
Baris 20: Metode fetchmany(4) mengambil empat record dari kumpulan hasil.
Baris 21: Metode fetchall() mengambil semua record yang tersisa dari kumpulan hasil.
Baris 22: Fetchmany () memiliki ukuran default 1, jadi ia kembali mencoba mengambil satu record dari kumpulan hasil. Tetapi karena metode fetchmany (4) sudah mengakses 4 record dan metode fetchone () mengakses record pertama, maka metode ini mencoba mengambil tuple ke-6 dari kumpulan record.
Metode cursor.executemany():
Metode executionmany () membantu kita untuk INSERT OR REPLACE beberapa record sekaligus. Sintaks dari fungsi executemany() adalah:
executemany (query, args)
Parameter:
- query: Ini harus berupa tipe string.
- Arguments: Secara default, argumennya adalah not None, Jadi itu sebabnya kami tidak dapat menjalankan SELECTpermintaan dalam itu. Kita dapat melewatkan nilai-nilai baik jenistuple or list hanya.
Pengembalian:
- Ini akan mengembalikan hitungan jumlah baris yang terpengaruh selama kueri jika ada.
Jenis pengembalian:
- Tipe yang dikembalikan akan berupa bilangan bulat (int or None).
Sekarang, kita akan menunjukkan contoh metode di atas.
#python executemany.py
#import the library
import mysql.connector
# creating connection to the database
conn = mysql.connector.connect(
host="localhost",
user="sammy",
password="password",
database="dbTest"
)
mycursor = conn.cursor()
# execute the query with their record value
query = 'INSERT INTO MOVIE (id, name, year) VALUES (%s, %s, %s)'
val = [(2, "Kung Fu panda", 2014),
(4, "Frozen", 2014),
(5, "Frozen2", 2020),
(6, "Iron Man", 2013)
]
mycursor.executemany(query,val)
# we commit(save) the records to the table
conn.commit()
print(mycursor.rowcount, "record(s) inserted.")
Baris 17: Kami membuat kueri kami untuk data penyisipan.
Baris 18: Kami membuat daftar nilai yang ingin kami masukkan ke dalam tabel.
Baris 25: Kami menggunakan metode executemany() untuk memasukkan beberapa record.
Keluaran: python executemany.py
mysql> select * from MOVIE;
+----+----------------+------+
| id | name | year |
+----+----------------+------+
| 1 | Bruce Almighty | 2003 |
| 2 | Kung Fu panda | 2014 |
| 3 | Kung Fu panda | 2014 |
| 4 | Frozen | 2014 |
| 5 | Frozen2 | 2020 |
| 6 | Iron Man | 2013 |
+----+----------------+------+
6 rows in set (0.00 sec)
Jalankan banyak kueri menggunakan fungsi eksekusi () tunggal:
Kami juga dapat mengeksekusi beberapa kueri menggunakan fungsi eksekusi tunggal (). Fungsi execute() menerima satu parameter tambahan,multi. Itumulti=Falsesecara default. Jika kita menjagamulti=True, maka kita dapat menjalankan kueri multi-sql menggunakan pemisah titik koma (;).
# python execute_multi.py
#import the library
import mysql.connector
# creating connection
conn = mysql.connector.connect(
host="localhost",
user="sammy",
password="password",
database ="dbTest"
)
# import the cursor from the connection (conn)
mycursor = conn.cursor()
# query with format parameter style
query_1 = "select * from MOVIE"
query_2 = 'INSERT INTO MOVIE (id, name, year) VALUES (%s, %s, %s)'
queries = [query_1,query_2]
val = (8, "Series", 2001)
multiresults = mycursor.execute(";".join(queries), val, multi=True)
count = 1
for result in multiresults:
# result is just like a cursor, so we can access all
# attributes of the cursor
print("query_{0} - {1} :".format(count, result.statement))
if result.with_rows:
for row in result:
print(row)
count = count + 1
else:
print("No result")
print()
mycursor.close()
conn.close()
Keluaran: python execute_multi.py
query_1 - select * from MOVIE :
(1, 'Bruce Almighty', 2003)
(2, 'Kung Fu panda', 2014)
(3, 'Kung Fu panda', 2014)
(4, 'Frozen', 2014)
(5, 'Frozen2', 2020)
(6, 'Iron Man', 2013)
(7, 'Merlin', 2001)
query_2 - INSERT INTO MOVIE (id, name, year) VALUES (8, 'Series', 2001) :
No result
Baris 23: Kami membuat daftar dua kueri.
Baris 28: Kami meneruskan daftar kueri, val, dan pemisah (;) ke metode eksekusi (). Kami juga mengubah nilaimulti dari Salah ke Benar. p>
Pada output di atas, kita dapat melihat hasil multi-query.
Kesimpulan:
Pada artikel ini, kami mempelajari metode eksekusi (). Kami juga telah melihat berbagai jenis metode execute() seperti metode executemany(). Kami juga mempelajari cara melakukan kueri melalui kursor. Jalankan () metode dan parameter yang berbeda dari metode itu. Terakhir, kita juga telah melihat bagaimana kita dapat melakukan multi-query menggunakan metode execute().
Kode untuk artikel ini tersedia di tautan Github:
https://github.com/shekharpandey89/cursor-execute-python