PythonToday 26 апрСля 2023

🐍🐬 Python + MySQL: ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Π‘Π£Π‘Π” MySQL ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½Π΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python

Из этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ MySQL с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ основныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅: установка Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, созданиС ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
🐍🐬 Python + MySQL: ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Π‘Π£Π‘Π” MySQL ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½Π΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

БСгодня ΠΌΡ‹ рассмотрим Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ всСго Π² нСсколько строк ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Π‘Π£Π‘Π” MySQL с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ нСсколько основных ΠΊΠΎΠΌΠ°Π½Π΄ для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ, добавлСния ΠΈ удалСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° языкС SQL.

Установка Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

Установим ΠΏΠ°ΠΊΠ΅Ρ‚ PyMySQL Π² нашС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅. Данная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° являСтся ΡΠ²ΡΠ·ΡƒΡŽΡ‰ΠΈΠΌ Π·Π²Π΅Π½ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Python ΠΈ нашСй Π‘Π£Π‘Π”:

        pip install pymysql
    

Π£ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΅ΡΡ‚ΡŒ вСсьма простая, понятная докумСнтация ΠΈ большоС ΠΊΠΎΠΌΡŒΡŽΠ½ΠΈΡ‚ΠΈ.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„Π°ΠΉΠ» main.py, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ вся магия ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π² Π½Π΅Π³ΠΎ Ρ€Π°Π½Π΅Π΅ установлСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ:

        import pymysql
    
Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста»

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π‘Π”

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Π±Π°Π·Π΅. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса pymysql, Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ Ρƒ Π½Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ connect ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Π² Π½Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ нашСй Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (Π‘Π”):

main.py
        import pymysql

connection = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='first_user',
    password='qwerty',
    database='db_name',
    cursorclass=pymysql.cursors.DictCursor
)
    
  • host: Ссли ваша Π‘Π” находится Π½Π° локальной машинС, Ρ‚ΠΎ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ localhost , Π»ΠΈΠ±ΠΎ 127.0.0.1, Π»ΠΈΠ±ΠΎ IP адрСс хостинга, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΠ»ΠΈ Π‘Π£Π‘Π”
  • port: стандартный 3306
  • user: это Π»ΠΎΠ³ΠΈΠ½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • password: ΠΏΠ°Ρ€ΠΎΠ»ΡŒ
  • db_name: имя нашСй Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

ΠžΠ±Π΅Ρ€Π½Π΅ΠΌ ΠΊΠΎΠ΄ Π² Π±Π»ΠΎΠΊ try/except, Π² Π±Π»ΠΎΠΊΠ΅ try Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ Π‘Π”, Π° Π² Π±Π»ΠΎΠΊΠ΅ except Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ошибки:

main.py
        import pymysql

try:
    connection = pymysql.connect(
        host='127.0.0.1',
        port=3306,
        user='first_user',
        password='qwerty',
        database='db_name',
        cursorclass=pymysql.cursors.DictCursor
    )
    print("successfully connected...")
    print("#" * 20)

except Exception as ex:
    print("Connection refused...")
    print(ex)
    

ПослС Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ рСкомСндуСтся Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ соСдинСниС. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ Π±Π»ΠΎΠΊ try/finally, Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° try ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ наши запросы ΠΊ Π‘Π”, Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° finally Π±ΡƒΠ΄Π΅ΠΌ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ нашС соСдинСниС:

main.py
        import pymysql

try:
    connection = pymysql.connect(
        host='127.0.0.1',
        port=3306,
        user='first_user',
        password='qwerty',
        database='db_name',
        cursorclass=pymysql.cursors.DictCursor
    )
    print("successfully connected...")
    print("#" * 20)

    try:
        pass

    finally:
        connection.close()

except Exception as ex:
    print("Connection refused...")
    print(ex)
    

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с MySQL, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ cursor. Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π² сСбС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для провСдСния SQL ΠΊΠΎΠΌΠ°Π½Π΄. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ просто ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ cursor = connection.cursor(), Ρ‚Π°ΠΊ ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ контСкстным ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ with. МнС Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ нравится большС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ выглядит Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Π΅ΠΉ, Π΄Π° ΠΈ докумСнтация подсказываСт Π½Π°ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ:

main.py
        
import pymysql

try:
    connection = pymysql.connect(
        host='127.0.0.1',
        port=3306,
        user='first_user',
        password='qwerty',
        database='db_name',
        cursorclass=pymysql.cursors.DictCursor
    )
    print("successfully connected...")
    print("#" * 20)

    try:
        # create table
        with connection.cursor() as cursor:
            pass

    finally:
        connection.close()

except Exception as ex:
    print("Connection refused...")
    print(ex)
    

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сСгодня потрСнируСмся. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ create_table_query ΠΈ пишСм запрос.

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ users со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ строками:

  • id Ρ‚ΠΈΠΏΠ° int со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, auto increment
  • name Ρ‚ΠΈΠΏΠ° varchar
  • password Ρ‚ΠΈΠΏΠ° varchar
  • email Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΈΠΏΠ° varchar
  • primary key Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅ id
main.py
        # create table
with connection.cursor() as cursor:
    create_table_query = "CREATE TABLE `users`(id int AUTO_INCREMENT," \
                            " name varchar(32)," \
                            " password varchar(32)," \
                            " email varchar(32), PRIMARY KEY (id));"
    

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ запрос Π½Π° созданиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρƒ cursor ΠΌΠ΅Ρ‚ΠΎΠ΄ execute, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² Π½Π΅Π³ΠΎ наш запрос. Π’Ρ‹Π²Π΅Π΄Π΅ΠΌ Π² print сообщСниС ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ исполнСнии:

main.py
        # create table
with connection.cursor() as cursor:
    create_table_query = "CREATE TABLE `users`(id int AUTO_INCREMENT," \
                            " name varchar(32)," \
                            " password varchar(32)," \
                            " email varchar(32), PRIMARY KEY (id));"
    cursor.execute(create_table_query)
    print("Table created successfully")
    

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

Π’Π°Π±Π»ΠΈΡ†Ρƒ ΠΌΡ‹ создали, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ Π΅Ρ‘ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π—Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² SQL ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ INSERT. ПишСм запрос. Дословно Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ:

Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ users, пСрСчисляСм поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

НапримСр, Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Анна, с ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ qwerty ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ ΠΎΡ‚ gmail:

main.py
        # insert data
with connection.cursor() as cursor:
    insert_query = "INSERT INTO `users` (name, password, email) VALUES ('Anna', 'qwerty', 'anna@gmail.com');"

    

Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ execute Ρƒ cursor ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² Π½Π΅Π³ΠΎ наш запрос. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ наши Π΄Π°Π½Π½Ρ‹Π΅ занСслись Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ Ρ‚Π°ΠΌ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наш запрос. Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ commit Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° connection:

main.py
        # insert data
with connection.cursor() as cursor:
    insert_query = "INSERT INTO `users` (name, password, email) VALUES ('Anna', 'qwerty', 'anna@gmail.com');"
    cursor.execute(insert_query)
    connection.commit()
    

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² нашСй Ρ‚Π°Π±Π»ΠΈΡ†Π΅ создалась ΠΎΠ΄Π½Π° запись с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Анна.

Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

НапишСм запрос Π½Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСх Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π—Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° Π² Π΄Π°Π½Π½ΠΎΠΌ запросС Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ всС, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅:

main.py
        # select all data from table
with connection.cursor() as cursor:
    select_all_rows = "SELECT * FROM `users`"
    cursor.execute(select_all_rows)
    

Π£ cursor Π΅ΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ fetchall, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ всС строки. Нам лишь остаСтся ΠΏΡ€ΠΎΠ±Π΅ΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΠΎ Π½ΠΈΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΈ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ.

main.py
        # select all data from table
with connection.cursor() as cursor:
    select_all_rows = "SELECT * FROM `users`"
    cursor.execute(select_all_rows)

    rows = cursor.fetchall()
    for row in rows:
        print(row)
    print("#" * 20)
    

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

НапишСм запрос Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅. Π“ΠΎΠ²ΠΎΡ€ΠΈΠΌ: Π£Π΄Π°Π»ΠΈΡ‚ΡŒ запись ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ users, Π³Π΄Π΅ id Ρ€Π°Π²Π΅Π½ 1. Π£ нас вСдь ΠΏΠΎΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° запись:

main.py
        # delete data
with connection.cursor() as cursor:
    delete_query = "DELETE FROM `users` WHERE id = 5;"
    cursor.execute(delete_query)
    connection.commit()
    

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

ПослСдний запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄Ρ€ΠΎΠΏΠ½ΠΈΠΌ Π½Π°ΡˆΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Под словом Π΄Ρ€ΠΎΠΏΠ½ΡƒΡ‚ подразумСваСтся ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ всСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹: Π΄Π°Π½Π½ΠΎΠΌΡƒ запросу, ΠΊΠ°ΠΊ ΠΈ запросу Π½Π° созданиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π΅ трСбуСтся:

main.py
        # drop table
with connection.cursor() as cursor:
    drop_table_query = "DROP TABLE `users`;"
    cursor.execute(drop_table_query)
    

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ„Π°ΠΉΠ»Π° main.py:

        import pymysql

try:
    connection = pymysql.connect(
        host='127.0.0.1',
        port=3306,
        user='first_user',
        password='qwerty',
        database='db_name',
        cursorclass=pymysql.cursors.DictCursor
    )
    print("successfully connected...")
    print("#" * 20)

    try:
        # create table
        with connection.cursor() as cursor:
            create_table_query = "CREATE TABLE `users`(id int AUTO_INCREMENT," \
                                 " name varchar(32)," \
                                 " password varchar(32)," \
                                 " email varchar(32), PRIMARY KEY (id));"
            cursor.execute(create_table_query)
            print("Table created successfully")

        insert data
        with connection.cursor() as cursor:
            insert_query = "INSERT INTO `users` (name, password, email) VALUES ('Anna', 'qwerty', 'anna@gmail.com');"
            cursor.execute(insert_query)
            connection.commit()

        # delete data
        with connection.cursor() as cursor:
            delete_query = "DELETE FROM `users` WHERE id = 5;"
            cursor.execute(delete_query)
            connection.commit()

        # drop table
        with connection.cursor() as cursor:
            drop_table_query = "DROP TABLE `users`;"
            cursor.execute(drop_table_query)

        # select all data from table
        with connection.cursor() as cursor:
            select_all_rows = "SELECT * FROM `users`"
            cursor.execute(select_all_rows)
            
            rows = cursor.fetchall()
            for row in rows:
                print(row)
            print("#" * 20)

    finally:
        connection.close()

except Exception as ex:
    print("Connection refused...")
    print(ex)
    

ПодвСдСниС ΠΈΡ‚ΠΎΠ³ΠΎΠ²

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ Π‘Π£Π‘Π” MySQL с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ запросы, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ созданиС Ρ‚Π°Π±Π»ΠΈΡ†, занСсСниС Π² Π½ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ строк ΠΈ самих Ρ‚Π°Π±Π»ΠΈΡ†.

НадСюсь, ΡΡ‚Π°Ρ‚ΡŒΡ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π»Π° ΠΈ Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅. πŸ‘

***

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

ΠœΠ•Π ΠžΠŸΠ Π˜Π―Π’Π˜Π―

КакиС слоТности Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…?

Π’ΠΠšΠΠΠ‘Π˜Π˜

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ вакансию

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•