Python MySQL - mysql-connector 驱动

本篇文章使用 mysql-connector 来连接使用 MySQL, mysql-connector 是 MySQL 官方提供的驱动器。
我们可以使用 pip 命令来安装 mysql-connector:

python -m pip install mysql-connector        //cmd界面执行

使用以下代码测试是否安装成功

import mysql.connector        //如果没有报错说明安装成功

**注意:**如果你的MySQL是8.0版本,则需要修改加密规则,否则后面连接数据库时会报错,详情请参照Navicat连接mysql报错 1251错误

创建数据库连接

# 导入模块
import mysql.connector

# 创建数据库连接
mydb = mysql.connector.connect(
    host='localhost',      #数据库地址
    user='root',        #数据库用户名
    passwd='your—passwd',       #数据库密码
)

创建数据库

创建数据库使用create database语句,下面创建一个名为learning的数据库

# 导入模块
import mysql.connector

# 创建数据库连接
mydb = mysql.connector.connect(
    host='localhost',      #数据库地址
    user='root',        #数据库用户名
    passwd='your—passwd',       #数据库密码
)

my_cursor = mydb.cursor()       #使用cursor方法获取操作游标

my_cursor.execute("create database learning")    #使用execute方法执行sql语句

查看所有数据库

# 导入模块
import mysql.connector

# 创建数据库连接
mydb = mysql.connector.connect(
    host='localhost',      #数据库地址
    user='root',        #数据库用户名
    passwd='your—passwd',       #数据库密码
)

my_cursor = mydb.cursor()       #使用cursor方法获取操作游标

my_cursor.execute("show databases")    #使用execute方法执行sql语句

for i in my_cursor:            #使用for循环打印每个数据库
    print(i)

现在有了数据库,我们可以直接连接数据库,只需在connect中配置一条语句

# 创建数据库连接
mydb = mysql.connector.connect(
    host='localhost',      #数据库地址
    user='root',        #数据库用户名
    passwd='your—passwd',       #数据库密码
    database='learning',    #配置数据库名
)

创建数据表
创建数据表使用create table语句,创建数据表前,需要确保数据库已存在,以下创建一个名为 users 的数据表:

# 导入模块
import mysql.connector

# 创建数据库连接
mydb = mysql.connector.connect(
    host='localhost',      #数据库地址
    user='root',        #数据库用户名
    passwd='your—passwd',       #数据库密码
    database='learning',    #配置数据库名
)

my_cursor = mydb.cursor()       #使用cursor方法获取操作游标

my_cursor.execute("create table users (name varchar(20), age int, male varchar(20) )")    #使用execute方法执行sql语句

执行成功后可以看到数据库中多了一张users表

创建表的时候我们一般都会设置一个主键(PRIMARY KEY),我们可以使用 “INT AUTO_INCREMENT PRIMARY KEY” 语句来创建一个主键,主键起始值为 1,逐步递增。

如果我们的表已经创建,我们需要使用 ALTER TABLE 来给表添加主键:

# 导入模块
import mysql.connector

# 创建数据库连接
mydb = mysql.connector.connect(
    host='localhost',      #数据库地址
    user='root',        #数据库用户名
    passwd='your—passwd',       #数据库密码
    database='learning',    #配置数据库名
)

my_cursor = mydb.cursor()       #使用cursor方法获取操作游标

my_cursor.execute("ALTER TABLE users ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")    #使用execute方法执行sql语句

插入数据
插入数据使用 insert into语句:

# 导入模块
import mysql.connector

# 创建数据库连接
mydb = mysql.connector.connect(
    host='localhost',      #数据库地址
    user='root',        #数据库用户名
    passwd='your—passwd',       #数据库密码
    database='learning',    #配置数据库名
)

my_cursor = mydb.cursor()       #使用cursor方法获取操作游标

my_cursor.execute("insert into users(name, age, male) values('admin', '20', 'M')")    #使用execute方法执行sql语句

mydb.commit()    # 数据表内容有更新,必须使用到该语句

print(my_cursor.rowcount, "条记录已更新")        #rowcount方法返回sql语句执行后影响的行数

输出结果为

1 条记录已更新

如果我们想在数据记录插入后,获取该记录的 ID ,可以使用以下代码:

# 导入模块
import mysql.connector

# 创建数据库连接
mydb = mysql.connector.connect(
    host='localhost',      #数据库地址
    user='root',        #数据库用户名
    passwd='your—passwd',       #数据库密码
    database='learning',    #配置数据库名
)

my_cursor = mydb.cursor()       #使用cursor方法获取操作游标

my_cursor.execute("insert into users(name, age, male) values('admin', '20', 'M')")    #使用execute方法执行sql语句

mydb.commit()    # 数据表内容有更新,必须使用到该语句

print("1 条记录已插入, ID:", my_cursor.lastrowid) 

结果为

1 条记录已插入, ID: 3

查询数据
查询数据使用 select 语句:

# 导入模块
import mysql.connector

# 创建数据库连接
mydb = mysql.connector.connect(
    host='localhost',      #数据库地址
    user='root',        #数据库用户名
    passwd='your—passwd',       #数据库密码
    database='learning',    #配置数据库名
)

my_cursor = mydb.cursor()       #使用cursor方法获取操作游标

my_cursor.execute("select * from users")    #使用execute方法执行sql语句

result = my_cursor.fetchall()   #fetchall()方法获取全部数据

for i in my_cursor:
    print(i)

删除记录

删除记录使用 delete from 语句:

# 导入模块
import mysql.connector

# 创建数据库连接
mydb = mysql.connector.connect(
    host='localhost',      #数据库地址
    user='root',        #数据库用户名
    passwd='your—passwd',       #数据库密码
    database='learning',    #配置数据库名
)

my_cursor = mydb.cursor()       #使用cursor方法获取操作游标

sql = "delete from users where id=1"

my_cursor.execute(sql)    #使用execute方法执行sql语句

mydb.commit()        # 数据表内容有更新,必须使用到该语句

为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义删除语句的条件:

# 导入模块
import mysql.connector

# 创建数据库连接
mydb = mysql.connector.connect(
    host='localhost',      #数据库地址
    user='root',        #数据库用户名
    passwd='your—passwd',       #数据库密码
    database='learning',    #配置数据库名
)

my_cursor = mydb.cursor()       #使用cursor方法获取操作游标

sql = "delete from users where id=%s"
val = (2,)

my_cursor.execute(sql,val)    #使用execute方法执行sql语句

mydb.commit()

print(my_cursor.rowcount, "条记录已删除")

更新表数据
数据表更新使用 update 语句

# 导入模块
import mysql.connector

# 创建数据库连接
mydb = mysql.connector.connect(
    host='localhost',      #数据库地址
    user='root',        #数据库用户名
    passwd='your—passwd',       #数据库密码
    database='learning',    #配置数据库名
)

my_cursor = mydb.cursor()       #使用cursor方法获取操作游标

sql = "update users set name='root' where name='admin' "    #把admin的名字改为root


my_cursor.execute(sql)    #使用execute方法执行sql语句

mydb.commit()       # 数据表内容有更新,必须使用到该语句

print(my_cursor.rowcount, "条记录已更新")

为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义更新语句的条件:

# 导入模块
import mysql.connector

# 创建数据库连接
mydb = mysql.connector.connect(
    host='localhost',      #数据库地址
    user='root',        #数据库用户名
    passwd='your—passwd',       #数据库密码
    database='learning',    #配置数据库名
)

my_cursor = mydb.cursor()       #使用cursor方法获取操作游标

sql = "update users set name=%s where name=%s "    #把admin的名字改为root
val = ('root', 'admin')

my_cursor.execute(sql, val)    #使用execute方法执行sql语句

mydb.commit()       # 数据表内容有更新,必须使用到该语句

print(my_cursor.rowcount, "条记录已更新")

删除表
删除表使用 drop table 语句

# 导入模块
import mysql.connector

# 创建数据库连接
mydb = mysql.connector.connect(
    host='localhost',      #数据库地址
    user='root',        #数据库用户名
    passwd='your—passwd',       #数据库密码
    database='learning',    #配置数据库名
)

my_cursor = mydb.cursor()       #使用cursor方法获取操作游标

sql = "drop table users"   

my_cursor.execute(sql)    #使用execute方法执行sql语句

你可能感兴趣的:(Python基础,mysql,python,数据库)