首先安装需要用到的 MySQL 依赖包
pip3 install mysqlclient
连接整个 mysql 服务
# 引入模块包
import MySQLdb as mysql
#创建一个连接
connect = mysql.connect(
# 地址
host = '127.0.0.1',
# 端口
port = 3306,
# 用户
user = 'root',
# 密码
passwd = '123456',
# 编码格式
charset = 'utf8'
)
# 关闭连接
connect.close()
创建数据库
import MySQLdb as mysql
#创建一个连接
connect = mysql.connect(
# 地址
host = "127.0.0.1",
# 端口
port = 3306,
# 用户
user = "root",
# 密码
passwd = "123456",
# 编码格式
charset = "utf8"
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "CREATE DATABASE test"
# 执行 SQL 方法
cursor.execute(sql)
# 关闭连接
connect.close()
列出所有数据库
import MySQLdb as mysql
#创建一个连接
connect = mysql.connect(
# 地址
host = "127.0.0.1",
# 端口
port = 3306,
# 用户
user = "root",
# 密码
passwd = "123456",
# 编码格式
charset = "utf8"
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "SHOW DATABASES"
# 执行 SQL 方法
cursor.execute(sql)
# 循环遍历整个数据库
for i in cursor:
# 挨个数据库打印
print(i)
# 关闭连接
connect.close()
# 输出结果如下:
('information_schema',)
('mysql',)
('performance_schema',)
('sys',)
('test',)
连接指定的 MySQL 数据库
# 引入模块包
import MySQLdb as mysql
#创建一个连接
connect = mysql.connect(
# 地址
host = '127.0.0.1',
# 端口
port = 3306,
# 用户
user = 'root',
# 密码
passwd = '123456',
# 连接指定的数据库
db = 'test',
# 编码格式
charset = 'utf8'
)
# 关闭连接
connect.close()
创建数据表
# 引入模块包
import MySQLdb as mysql
#创建一个连接
connect = mysql.connect(
# 地址
host = '127.0.0.1',
# 端口
port = 3306,
# 用户
user = 'root',
# 密码
passwd = '123456',
# 连接指定的数据库
db = 'test',
# 编码格式
charset = 'utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "CREATE TABLE user (name VARCHAR(255), password VARCHAR(255))"
# 执行 SQL 方法
cursor.execute(sql)
# 关闭连接
connect.close()
给 user 表添加主键 id
# 引入模块包
import MySQLdb as mysql
#创建一个连接
connect = mysql.connect(
# 地址
host = '127.0.0.1',
# 端口
port = 3306,
# 用户
user = 'root',
# 密码
passwd = '123456',
# 连接指定的数据库
db = 'test',
# 编码格式
charset = 'utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "ALTER TABLE user ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY"
# 执行 SQL 方法
cursor.execute(sql)
# 关闭连接
connect.close()
创建一个带主键 id 的表
# 引入模块包
import MySQLdb as mysql
#创建一个连接
connect = mysql.connect(
# 地址
host = '127.0.0.1',
# 端口
port = 3306,
# 用户
user = 'root',
# 密码
passwd = '123456',
# 连接指定的数据库
db = 'test',
# 编码格式
charset = 'utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "CREATE TABLE news (id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), content VARCHAR(255))"
# 执行 SQL 方法
cursor.execute(sql)
# 关闭连接
connect.close()
在 user 表插入单数据
# 引入模块包
import MySQLdb as mysql
#创建一个连接
connect = mysql.connect(
# 地址
host = '127.0.0.1',
# 端口
port = 3306,
# 用户
user = 'root',
# 密码
passwd = '123456',
# 连接指定的数据库
db = 'test',
# 编码格式
charset = 'utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "INSERT INTO user (name, password) VALUES ('admin', '123456')"
# 执行插入数据的 SQL 方法
cursor.execute(sql)
# 更新数据表内容
connect.commit()
# 插入成功后返回成功的数据 id
print("1 条记录已插入, ID:", mycursor.lastrowid)
# 关闭连接
connect.close()
在 news 插入多条数据
# 引入模块包
import MySQLdb as mysql
# 创建一个连接
connect = mysql.connect(
# 地址
host='127.0.0.1',
# 端口
port=3306,
# 用户
user='root',
# 密码
passwd='123456',
# 连接指定的数据库
db='test',
# 编码格式
charset='utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "INSERT INTO news (title, content) VALUES (%s, %s)"
#要插入的数据
list = [
('标题一', '内容一'),
('标题二', '内容二'),
('标题三', '内容三'),
('标题四', '内容四'),
]
# 执行 SQL 方法
cursor.executemany(sql,list)
# 更新数据表内容
connect.commit()
# 成功后打印数据条数和提示
print(cursor.rowcount, "记录插入成功。")
# 关闭连接
connect.close()
查询某一张数据表所有数据
# 引入模块包
import MySQLdb as mysql
# 创建一个连接
connect = mysql.connect(
# 地址
host='127.0.0.1',
# 端口
port=3306,
# 用户
user='root',
# 密码
passwd='123456',
# 连接指定的数据库
db='test',
# 编码格式
charset='utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "SELECT * FROM news"
# 执行 SQL 方法
cursor.execute(sql)
# 循环整个列表并打印
for i in cursor:
print(i)
# 关闭连接
connect.close()
读取指定的字段数据
# 引入模块包
import MySQLdb as mysql
# 创建一个连接
connect = mysql.connect(
# 地址
host='127.0.0.1',
# 端口
port=3306,
# 用户
user='root',
# 密码
passwd='123456',
# 连接指定的数据库
db='test',
# 编码格式
charset='utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "SELECT name, password FROM user"
# 执行 SQL 方法
cursor.execute(sql)
for i in cursor:
print(i)
# 关闭连接
connect.close()
只读取一条数据
# 引入模块包
import MySQLdb as mysql
# 创建一个连接
connect = mysql.connect(
# 地址
host='127.0.0.1',
# 端口
port=3306,
# 用户
user='root',
# 密码
passwd='123456',
# 连接指定的数据库
db='test',
# 编码格式
charset='utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "SELECT title, content FROM news"
# 执行 SQL 方法
cursor.execute(sql)
# 读取一条数据
data = cursor.fetchone()
# 打印数据
print(data)
# 关闭连接
connect.close()
读取指定条件的数据
# 引入模块包
import MySQLdb as mysql
# 创建一个连接
connect = mysql.connect(
# 地址
host='127.0.0.1',
# 端口
port=3306,
# 用户
user='root',
# 密码
passwd='123456',
# 连接指定的数据库
db='test',
# 编码格式
charset='utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "SELECT * FROM news WHERE title ='标题一'"
# 执行 SQL 方法
cursor.execute(sql)
# 循环整个列表并打印
for i in cursor:
print(i)
# 关闭连接
connect.close()
模糊查询某个字段
# 引入模块包
import MySQLdb as mysql
# 创建一个连接
connect = mysql.connect(
# 地址
host='127.0.0.1',
# 端口
port=3306,
# 用户
user='root',
# 密码
passwd='luxifa970219',
# 连接指定的数据库
db='test',
# 编码格式
charset='utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "SELECT * FROM news WHERE title LIKE '%t%'"
# 执行 SQL 方法
cursor.execute(sql)
# 循环整个列表并打印
for i in cursor:
print(i)
# 关闭连接
connect.close()
数据库排序
默认升序 ASC 可不写,倒序为 DESC
# 引入模块包
import MySQLdb as mysql
# 创建一个连接
connect = mysql.connect(
# 地址
host='127.0.0.1',
# 端口
port=3306,
# 用户
user='root',
# 密码
passwd='luxifa970219',
# 连接指定的数据库
db='test',
# 编码格式
charset='utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "SELECT * FROM news ORDER BY id DESC" # 倒序
# sql = "SELECT * FROM news ORDER BY id ASC" # 升序
# sql = "SELECT * FROM news ORDER BY id" # 默认升序
# 执行 SQL 方法
cursor.execute(sql)
# 循环整个列表并打印
for i in cursor:
print(i)
# 关闭连接
connect.close()
设置查询的数据量
# 引入模块包
import MySQLdb as mysql
# 创建一个连接
connect = mysql.connect(
# 地址
host='127.0.0.1',
# 端口
port=3306,
# 用户
user='root',
# 密码
passwd='123456',
# 连接指定的数据库
db='test',
# 编码格式
charset='utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "SELECT * FROM news LIMIT 5" #读取前五条数据
# 执行 SQL 方法
cursor.execute(sql)
# 循环整个列表并打印
for i in cursor:
print(i)
# 关闭连接
connect.close()
指定起始位置查询的数据量
# 引入模块包
import MySQLdb as mysql
# 创建一个连接
connect = mysql.connect(
# 地址
host='127.0.0.1',
# 端口
port=3306,
# 用户
user='root',
# 密码
passwd='123456',
# 连接指定的数据库
db='test',
# 编码格式
charset='utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "SELECT * FROM news LIMIT 5 OFFSET 0" # 0 为 第一条,1 为第二条,以此类推
# 执行 SQL 方法
cursor.execute(sql)
# 循环整个列表并打印
for i in cursor:
print(i)
# 关闭连接
connect.close()
条件删除数据
# 引入模块包
import MySQLdb as mysql
# 创建一个连接
connect = mysql.connect(
# 地址
host='127.0.0.1',
# 端口
port=3306,
# 用户
user='root',
# 密码
passwd='123456',
# 连接指定的数据库
db='test',
# 编码格式
charset='utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "DELETE FROM news WHERE title = 'title1'"
# 执行 SQL 方法
cursor.execute(sql)
# 更新数据表内容
connect.commit()
# 打印删除了多少条数据
print(cursor.rowcount, " 条记录删除")
# 关闭连接
connect.close()
更改数据
# 引入模块包
import MySQLdb as mysql
# 创建一个连接
connect = mysql.connect(
# 地址
host='127.0.0.1',
# 端口
port=3306,
# 用户
user='root',
# 密码
passwd='123456',
# 连接指定的数据库
db='test',
# 编码格式
charset='utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句 根据条件查找将 title = 'title1' 改成 title = '这是一个标题'
sql = "UPDATE news SET title = '这是一个标题' WHERE title = 'title1'"
# 执行 SQL 方法
cursor.execute(sql)
# 更新数据表内容
connect.commit()
# 打印删除了多少条数据
print(cursor.rowcount, " 条数据被修改")
# 关闭连接
connect.close()
删除某一条数据
# 引入模块包
import MySQLdb as mysql
# 创建一个连接
connect = mysql.connect(
# 地址
host='127.0.0.1',
# 端口
port=3306,
# 用户
user='root',
# 密码
passwd='luxifa970219',
# 连接指定的数据库
db='test',
# 编码格式
charset='utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "DELETE FROM news where title = '这是一个标题'"
# 执行 SQL 方法
cursor.execute(sql)
# 更新数据表内容
connect.commit()
# 打印删除了多少条数据
print(cursor.rowcount, " 条数据被删除")
# 关闭连接
connect.close()
删除整个表
# 引入模块包
import MySQLdb as mysql
# 创建一个连接
connect = mysql.connect(
# 地址
host='127.0.0.1',
# 端口
port=3306,
# 用户
user='root',
# 密码
passwd='luxifa970219',
# 连接指定的数据库
db='test',
# 编码格式
charset='utf8'
)
# 调用游标
cursor = connect.cursor()
# SQL 语句
sql = "DROP TABLE IF EXISTS news" # 使用 "DROP TABLE" 删除,使用IF EXISTS 判断数据库是否存在
# 执行 SQL 方法
cursor.execute(sql)
# 关闭连接
connect.close()
常用的 增删改查完了,自己可以封装成一个 class 类方便使用,剩下多看看 sql 语句就 ok 了,其实方法都差不多,主要还是 sql 语句使用的重要性。