开始

安装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)

Where条件

使用筛选器选择

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)

防止SQL注入

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)

Order By

对结果进行排序

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的基本操作就是这样子了。

Python入门系列(十一)一篇搞定python操作MySQL数据库相关推荐

  1. python机器学习日志.01 ———三天搞定Python基本功.网页提纲

    大纲( Outline) 第1天:Python和科学编程介绍. Python中的基础知识: - 数据类型 - 控制结构 - 功能 - I/O文件 第2天:用Numpy,Scipy,Matplotlib ...

  2. python课件_如何20小时搞定Python量化期权实战?

    <Python量化期权实战应用>课程,在预售初期就备受关注,课程开始上线以来,内容更是受到了广大学员的一致好评. 眼看着课程就快要更新完毕了,如果还没有开始学习的同学要抓紧时间了. 课程总 ...

  3. Python高级特性: 12步轻松搞定Python装饰器

    12步轻松搞定Python装饰器 通过 Python 装饰器实现DRY(不重复代码)原则:  http://python.jobbole.com/84151/ 基本上一开始很难搞定python的装饰器 ...

  4. Python Web开发框架之Django篇——二、Django连接MySQL数据库以及建表的操作

    二.Django连接MySQL数据库以及建表的操作 准备工作:安装Python访问MySQL的模块 一.修改project同名目录下面的__init__.py文件 二.修改project同名目录下面的 ...

  5. python基础到实践_一本书搞定Python入门到实践

    题图:Photo by Aaron Burden on Unsplash 上周介绍了几本Python从入门到进阶书籍,今天推荐一本入门好书<Python编程:从入门到实践>,适合零基础小白 ...

  6. Python入门系列——第14篇

    字典 上篇,我们介绍了列表,在其它的语言中,可能还有更基本的一种数据结构:数组.但在Python里,没有数组只有列表.不过列表比起数组则更加强大.下面,我们看另外一种容器,它叫做字典.它也是pytho ...

  7. python入门系列——第2篇

    python程序的注释 忘了说了,在使用python2的同学可能发现中文出现了错误,没关系,我们在程序最开始加入 一句话,就可以让你含有中文的程序正常运行起来.--:# -*- coding: utf ...

  8. python 逆向生成正则表达式_一篇搞定Python正则表达式

    1. 正则表达式语法 1.1 字符与字符类 1 特殊字符:.^$?+*{}[]()| 以上特殊字符要想使用字面值,必须使用进行转义 2 字符类 1. 包含在[]中的一个或者多个字符被称为字符类,字符类 ...

  9. python爬虫教程视频-13天搞定Python分布爬虫

    1. 什么是爬虫? 网络爬虫也叫网络蜘蛛,如果把互联网比喻成一个蜘蛛网,那么蜘蛛就是在网上爬来爬去的蜘蛛,爬虫程序通过请求url地址,根据响应的内容进行解析采集数据, 比如:如果响应内容是html,分 ...

最新文章

  1. Coursera algorithm II PA4
  2. js函数调用html对象参数传递参数吗,js里函数参数传递对象传的是指针吗
  3. 面试题:聊聊Unix与Java的IO模型?
  4. Array.sort排序
  5. XMLReader—一个可以读取XML文件的java类
  6. 解决在IDEA 的Maven下 出现 Cannot access in offline mode 问题
  7. ACCESS的Ole对象读取写入
  8. 123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
  9. 省赛 和 南京邀请赛总结
  10. Revel后台管理框架
  11. 李佳琦、薇娅们的残酷生存物语
  12. vba宏是什么,如何操作
  13. 票务搜索网站有戏网“今夜有戏”
  14. 三点一刻的时候, 时针和分针的夹角是多少?
  15. 龙之谷2微信哪个服务器,龙之谷2微信区
  16. TextView简介
  17. 信用卡套现千万别触碰这两条红线,否则银行会盯上你!
  18. 更相减损术--最大公约数
  19. 走进英特尔大连工厂,看英特尔存储技术赋能数据未来
  20. ISP——LSC(Lens Shading Correction)

热门文章

  1. 2021年G3锅炉水处理多少分及格及G3锅炉水处理操作证考试
  2. vue启动需要安装的软件
  3. 疯狂的母牛,对方程的求解,不要62(不吉利数字),回文串,进制转换以及空心三角形
  4. 蓝桥杯(python)——机器人数目
  5. 第1 章电子数据取证概述
  6. BZOJ4079 [Wf2014]Pachinko
  7. 微软浏览器Edge在虚拟机(WIN11)中打开标签栏泛白
  8. 麒麟信安参与共建的 中国首个桌面操作系统根社区openKylin即将发布
  9. HTML中属性manifest格式,manifest是啥 MANIFEST文件是什么文件?
  10. nunito字体_dcat-admin: 使用很少的代码快速构建一个功能完善的高颜值后台系统,内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的HTML代码。...