安装MySQL驱动
$ python -m pip install mysql-connector-python测试MySQL连接器
import mysql.connector测试MySQL连接
import mysql.connectormydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword")print(mydb)import mysql.connectormydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword")mycursor = mydb.cursor()mycursor.execute("CREATE DATABASE mydatabase")import mysql.connectormydb = 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))")import mysql.connectormydb = 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.")重要!。注意这个语句:mydb.commit()。它是进行修改的必要条件,否则就不会对表进行修改。
插入多行
import mysql.connectormydb = 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.")获取插入的ID
import mysql.connectormydb = 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)import mysql.connectormydb = 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)从表格中选择
import mysql.connectormydb = 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)注意:我们使用fetchall()方法,它从最后执行的语句中获取所有行。
选择列
import mysql.connectormydb = 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)如果只想查询一条数据,可以使用fetchone()方法。
import mysql.connectormydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="mydatabase")mycursor = mydb.cursor()mycursor.execute("SELECT * FROM customers")myresult = mycursor.fetchone()print(myresult)使用筛选器选择
import mysql.connectormydb = 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)通配符
import mysql.connectormydb = 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)import mysql.connectormydb = 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)对结果进行排序
import mysql.connectormydb = 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)使用DESC关键字对结果进行降序排序。
import mysql.connectormydb = 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)import mysql.connectormydb = 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")防止SQL注入
import mysql.connectormydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="mydatabase")mycursor = mydb.cursor()sql = "DELETE FROM customers WHERE address = %s"adr = ("Yellow Garden 2", )mycursor.execute(sql, adr)mydb.commit()print(mycursor.rowcount, "record(s) deleted")import mysql.connectormydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="mydatabase")mycursor = mydb.cursor()sql = "DROP TABLE customers"mycursor.execute(sql)import mysql.connectormydb = 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")防止SQL注入
import mysql.connectormydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="mydatabase")mycursor = mydb.cursor()sql = "UPDATE customers SET address = %s WHERE address = %s"val = ("Valley 345", "Canyon 123")mycursor.execute(sql, val)mydb.commit()print(mycursor.rowcount, "record(s) affected")import mysql.connectormydb = 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)从另一个位置开始
import mysql.connectormydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="mydatabase")mycursor = mydb.cursor()mycursor.execute("SELECT * FROM customers LIMIT 5 OFFSET 2")myresult = mycursor.fetchall()for x in myresult: print(x)# users 表{ id: 1, name: 'John', fav: 154},{ id: 2, name: 'Peter', fav: 154},{ id: 3, name: 'Amy', fav: 155},{ id: 4, name: 'Hannah', fav:},{ id: 5, name: 'Michael', fav:}# products{ id: 154, name: 'Chocolate Heaven' },{ id: 155, name: 'Tasty Lemons' },{ id: 156, name: 'Vanilla Dreams' }import mysql.connectormydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="mydatabase")mycursor = mydb.cursor()sql = "SELECT \ users.name AS user, \ products.name AS favorite \ FROM users \ INNER JOIN products ON users.fav = products.id"mycursor.execute(sql)myresult = mycursor.fetchall()for x in myresult: print(x)MySQL的基本操作就是这样子了。
您的关注,是我的无限动力!
公众号 @生活处处有BUG