• Selasa, 19 Maret 2024

     Phyton My SQL

    Python can be used in database applications.


    One of the most popular databases is MySQL.


    MySQL Database

    To be able to experiment with the code examples in this tutorial, you should have MySQL installed on your computer.


    You can download a MySQL database at https://www.mysql.com/downloads/.


    Install MySQL Driver

    Python needs a MySQL driver to access the MySQL database.


    Download and install "MySQL Connector":


    C:\Users\Your Name\AppData\Local\Programs\Python\Python36-32\Scripts>python -m pip install mysql-connector-python

    Now you have downloaded and installed a MySQL driver.


    Create Connection

    Start by creating a connection to the database.


    Use the username and password from your MySQL database:


    demo_mysql_connection.py:


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword"

    )


    print(mydb)


    Creating a Database

    To create a database in MySQL, use the "CREATE DATABASE" statement:


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword"

    )


    mycursor = mydb.cursor()


    mycursor.execute("CREATE DATABASE mydatabase")


    Check if Database Exists

    You can check if a database exist by listing all databases in your system by using the "SHOW DATABASES" statement:


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword"

    )


    mycursor = mydb.cursor()


    mycursor.execute("SHOW DATABASES")


    for x in mycursor:

      print(x)


    Create Table

    Creating a Table

    To create a table in MySQL, use the "CREATE TABLE" statement.


    Make sure you define the name of the database when you create the connection


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")


    Check if Table Exists

    You can check if a table exist by listing all tables in your database with the "SHOW TABLES" statement:


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    mycursor.execute("SHOW TABLES")


    for x in mycursor:

      print(x)


    Primary Key

    When creating a table, you should also create a column with a unique key for each record.


    This can be done by defining a PRIMARY KEY.


    We use the statement "INT AUTO_INCREMENT PRIMARY KEY" which will insert a unique number for each record. Starting at 1, and increased by one for each record.


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    mycursor.execute("CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), address VARCHAR(255))")


    Insert Into Table


    To fill a table in MySQL, use the "INSERT INTO" statement.


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"

    val = ("John", "Highway 21")

    mycursor.execute(sql, val)


    mydb.commit()


    print(mycursor.rowcount, "record inserted.")


    Insert Multiple Rows

    To insert multiple rows into a table, use the executemany() method.


    The second parameter of the executemany() method is a list of tuples, containing the data you want to insert:


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"

    val = [

      ('Peter', 'Lowstreet 4'),

      ('Amy', 'Apple st 652'),

      ('Hannah', 'Mountain 21'),

      ('Michael', 'Valley 345'),

      ('Sandy', 'Ocean blvd 2'),

      ('Betty', 'Green Grass 1'),

      ('Richard', 'Sky st 331'),

      ('Susan', 'One way 98'),

      ('Vicky', 'Yellow Garden 2'),

      ('Ben', 'Park Lane 38'),

      ('William', 'Central st 954'),

      ('Chuck', 'Main Road 989'),

      ('Viola', 'Sideway 1633')

    ]


    mycursor.executemany(sql, val)


    mydb.commit()


    print(mycursor.rowcount, "was inserted.")


    Get Inserted ID

    You can get the id of the row you just inserted by asking the cursor object.


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"

    val = ("Michelle", "Blue Village")

    mycursor.execute(sql, val)


    mydb.commit()


    print("1 record inserted, ID:", mycursor.lastrowid)


    Select From a Table

    To select from a table in MySQL, use the "SELECT" statement:


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    mycursor.execute("SELECT * FROM customers")


    myresult = mycursor.fetchall()


    for x in myresult:

      print(x)


    Selecting Columns

    To select only some of the columns in a table, use the "SELECT" statement followed by the column name(s):


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    mycursor.execute("SELECT name, address FROM customers")


    myresult = mycursor.fetchall()


    for x in myresult:

      print(x)


    Select With a Filter

    When selecting records from a table, you can filter the selection by using the "WHERE" statement:


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    sql = "SELECT * FROM customers WHERE address ='Park Lane 38'"


    mycursor.execute(sql)


    myresult = mycursor.fetchall()


    for x in myresult:

      print(x)


    Wildcard Characters

    You can also select the records that starts, includes, or ends with a given letter or phrase.


    Use the %  to represent wildcard characters:


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    sql = "SELECT * FROM customers WHERE address LIKE '%way%'"


    mycursor.execute(sql)


    myresult = mycursor.fetchall()


    for x in myresult:

      print(x)


    Prevent SQL Injection

    When query values are provided by the user, you should escape the values.


    This is to prevent SQL injections, which is a common web hacking technique to destroy or misuse your database.


    The mysql.connector module has methods to escape query values:


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    sql = "SELECT * FROM customers WHERE address = %s"

    adr = ("Yellow Garden 2", )


    mycursor.execute(sql, adr)


    myresult = mycursor.fetchall()


    for x in myresult:

      print(x)


    Sort the Result

    Use the ORDER BY statement to sort the result in ascending or descending order.


    The ORDER BY keyword sorts the result ascending by default. To sort the result in descending order, use the DESC keyword.


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    sql = "SELECT * FROM customers ORDER BY name"


    mycursor.execute(sql)


    myresult = mycursor.fetchall()


    for x in myresult:

      print(x)


    ORDER BY DESC

    Use the DESC keyword to sort the result in a descending order.


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    sql = "SELECT * FROM customers ORDER BY name DESC"


    mycursor.execute(sql)


    myresult = mycursor.fetchall()


    for x in myresult:

      print(x)


    Delete Record

    You can delete records from an existing table by using the "DELETE FROM" statement:


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    sql = "DELETE FROM customers WHERE address = 'Mountain 21'"


    mycursor.execute(sql)


    mydb.commit()


    print(mycursor.rowcount, "record(s) deleted")


    Delete a Table

    You can delete an existing table by using the "DROP TABLE" statement:


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    sql = "DROP TABLE customers"


    mycursor.execute(sql)


    Drop Only if Exist

    If the table you want to delete is already deleted, or for any other reason does not exist, you can use the IF EXISTS keyword to avoid getting an error.


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    sql = "DROP TABLE IF EXISTS customers"


    mycursor.execute(sql)


    Update Table

    You can update existing records in a table by using the "UPDATE" statement:


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    sql = "UPDATE customers SET address = 'Canyon 123' WHERE address = 'Valley 345'"


    mycursor.execute(sql)


    mydb.commit()


    print(mycursor.rowcount, "record(s) affected")


    Limit the Result

    You can limit the number of records returned from the query, by using the "LIMIT" statement:


    import mysql.connector


    mydb = mysql.connector.connect(

      host="localhost",

      user="yourusername",

      password="yourpassword",

      database="mydatabase"

    )


    mycursor = mydb.cursor()


    mycursor.execute("SELECT * FROM customers LIMIT 5")


    myresult = mycursor.fetchall()


    for x in myresult:

      print(x)

  • Copyright © - KARUVIEW

    KARUVIEW - Powered by Blogger - Designed by Johanes Djogan