开始

安装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. python: c_char_p指向的bitmap图像数据,通过c_char_Array最终赋值给PIL的Image对象
  2. 收藏:《Exchange 2013 OWA/ECP 登陆后白屏》
  3. 大厂笔试 java基础
  4. python函数参数类型及顺序_python函数参数类型及其顺序
  5. InvalidCharacterError: Failed to execute 'setAttribute' on 'Element': ')' is not a valid
  6. python项目实战:模拟登陆CSDN
  7. Redis缓存组件开发规范
  8. python求小于n的所有素数_关于求N以内素数的python实现以及优化方法
  9. java生成zipf分布_统计分布-Zipf分布
  10. win10升级助手_不用QQ也能电脑远程,win10这隐藏功能太良心了!真后悔发现太晚...
  11. java获取当天是周几
  12. 设置360浏览器的背景为护眼模式(浅豆绿色)
  13. c语言程序设计第五版第三章课后题
  14. (新手向)在matlab中运用SMOTE和前馈神经网络对wilt(枯萎)数据集进行机器学习
  15. 基于open cv 的人脸识别程序
  16. 【Lua编程基础】实测Lua中点和冒号的区别
  17. iis不能启动站点,端口被占用.(解决办法)
  18. 为什么电源正极进来后要先过大电容,再过小电容?
  19. Stata:三重差分模型简介
  20. 人脸识别系列(一):DeepFace

热门文章

  1. canvas实现地图放大缩小拖拽
  2. 电子邮箱免费申请注册教程,公司企业邮箱怎么开通注册?
  3. ElasticSearch分布式搜索引擎-03
  4. Conflux 树图区块链 “数字藏品 合约标准和编写规范
  5. medium hosts
  6. MTTR和MTBF两个指标的简单介绍
  7. DevOps团队如何为网络星期一做准备
  8. 时间序列数据分析与预测之Python工具汇总
  9. 虚拟机实现(C语言)
  10. android彩信数据字段