安装

用到的库pymysql

1
pip3 install pymysql

连接数据库

连接

连接用到的方法是connect()

基本语法

1
2
3
4
pymysql.connect(host='地址',
user='用户',
password='密码',
database = '要连接的数据的名字可以不写')

演示,如果没有连接成功他会报错

1
2
3
4
5
6
7
8
9
import pymysql # 导入库

try:
mysql = pymysql.connect(host='localhost',
user='root',
password='root')
print("连接成功!")
except pymysql.err.OperationalError : # 报这个pymysql.err.OperationalError错误就是连接不成功
print("连接失败,可能用户或者密码错误!")

结果

1
连接成功!

image-20211026231028899

数据库的基本操作

  1. 使用 cursor() 方法创建一个游标对象 cursor

    语法

    1
    cursor = mysql.cursor() # 创建一个游标对象 cursor

    演示

    1
    2
    3
    4
    5
    mysql = pymysql.connect(host='地址',
    user='用户',
    password='密码',
    database = '要连接的数据的名字可以不写') # 连接数据库
    cursor = mysql.cursor() # 创建一个游标对象 cursor
  2. 使用 execute() 方法执行 SQL 查询

    格式

    1
    cursor.execute("要执行的mysql语句") # 执行mysql语句

    代码

    1
    2
    3
    4
    5
    6
    mysql = pymysql.connect(host='地址',
    user='用户',
    password='密码',
    database = '要连接的数据的名字可以不写') # 连接数据库
    cursor = mysql.cursor() # 创建一个游标对象 cursor
    cursor.execute("要执行的mysql语句") # 执行mysql语句
  1. 关闭数据库连接

    格式

    1
    mysql.close() # 关闭数据库

    演示

    1
    2
    3
    4
    5
    6
    mysql = pymysql.connect(host='地址',
    user='用户',
    password='密码',
    database = '要连接的数据的名字可以不写') # 连接数据库
    ................
    mysql.close() # 关闭数据库

    查询

查看当前数据库的有几个库,可以看见有4个库

image-20211028122435431

1
2
3
4
5
6
7
8
9
10
11
12
13
import pymysql # 导入库

try:
mysql = pymysql.connect(host='localhost',
user='root',
password='root'
)
print("连接成功!")
cursor = mysql.cursor() # 创建一个游标对象 cursor
Inquire=cursor.execute("SHOW DATABASES;") # 执行mysql语句,SHOW DATABASES;是查看当前有哪些数据库
print(Inquire)
except pymysql.err.OperationalError : # 报这个pymysql.err.OperationalError错误就是连接不成功
print("连接失败,可能用户或者密码错误!")

可以看见结果是4

fetall()获取全部数据

fetall()方法他会显示出来你查询的全部数据

1
cursor.fetchall()
  • 1、演示查询库名

    image-20211028122435431

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import pymysql # 导入库

    try:
    mysql = pymysql.connect(host='localhost',
    user='root',
    password='root'
    )
    print("连接成功!")
    cursor = mysql.cursor() # 创建一个游标对象 cursor
    cursor.execute("SHOW DATABASES;") # 执行mysql语句,SHOW DATABASES;是查看当前有哪些数据库
    print(cursor.fetchall())
    except pymysql.err.OperationalError : # 报这个pymysql.err.OperationalError错误就是连接不成功
    print("连接失败,可能用户或者密码错误!")

    结果

  • 2、演示查询数据内容
    image-20211028130156975

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import pymysql # 导入库

    try:
    mysql = pymysql.connect(host='localhost',
    user='root',
    password='root',
    database = 'admin') # 进入admin数据库里面
    print("连接成功!")
    cursor = mysql.cursor() # 创建一个游标对象 cursor
    cursor.execute("SELECT * FROM user") # 执行mysql语句,SELECT * FROM user 是查看user里面的内容
    print(cursor.fetchall())
    except pymysql.err.OperationalError : # 报这个pymysql.err.OperationalError错误就是连接不成功
    print("连接失败,可能用户或者密码错误!")

    结果

    image-20211028130347156

fetchone()获取但行数据

fetchone()方法获取查询他会一行一行的读取,返回单个序列,或者在没有更多数据可用时返回None

image-20211028130720539

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pymysql # 导入库

try:
mysql = pymysql.connect(host='localhost',
user='root',
password='root',
database = 'admin') # 进入admin数据库里面
print("连接成功!")
cursor = mysql.cursor() # 创建一个游标对象 cursor
cursor.execute("SELECT * FROM user") # 执行mysql语句,SHOW DATABASES;是查看当前有哪些数据库
print(cursor.fetchone())
except pymysql.err.OperationalError : # 报这个pymysql.err.OperationalError错误就是连接不成功
print("连接失败,可能用户或者密码错误!")

结果

image-20211028130853096

fetchmany()指定输出多少

这个方法是可以指定输出多少内容

语法

1
cursor.fetchmany(指定要输出几个)

演示

数据库的内容

image-20211028211521259

1
2
3
4
5
6
7
8
9
10
11
12
13
import pymysql # 导入库

try:
mysql = pymysql.connect(host='localhost',
user='root',
password='root',
database = 'admin')
print("连接成功!")
cursor = mysql.cursor() # 创建一个游标对象 cursor
cursor.execute("SELECT * FROM user") # 执行mysql语句,SHOW DATABASES;是查看当前有哪些数据库
print(cursor.fetchmany(2)) # 这个我指定输出2个
except pymysql.err.OperationalError : # 报这个pymysql.err.OperationalError错误就是连接不成功
print("连接失败,可能用户或者密码错误!")

结果:可以看见他输出了两个

image-20211028211606529

添加库

演示

添加前

image-20211102032356600

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import  pymysql # 导入库

try:
mysql = pymysql.connect(host='localhost',
user='root',
password='root') # 进入数据库里面
print("数据库连接生成!")

cursor=mysql.cursor() # 创建一个游标对象 cursor

cursor.execute("CREATE DATABASE admin") # 执行mysql语句,CREATE DATABASE admin是创建一个admin数据库
cursor.close() # 关闭连接
mysql.close() # 关闭

except pymysql.err.OperationalError : # 报这个pymysql.err.OperationalError错误就是连接不成功
print("连接失败,可能用户或者密码错误!")

结果

1
2
数据库连接生成!
创建成功!

创建表

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import  pymysql # 导入库

try:
mysql = pymysql.connect(host='localhost',
user='root',
password='root',
database = 'admin') # 进入admin数据库里面
print("数据库连接生成!")

cursor=mysql.cursor() # 创建一个游标对象 cursor

cursor.execute("CREATE TABLE user (id INT,user VARCHAR(20),password VARCHAR(20))") # 执行mysql语句
# user是表名
# id是字段,IHT是类型数字类型
# user是字段,VARCHAR(20)
# 是字符串类型的
# password
# 是字段,VARCHAR(20)
# 是字符串类型的

print("创建成功!")

cursor.close() # 关闭连接
mysql.close() # 关闭

except pymysql.err.OperationalError : # 报这个pymysql.err.OperationalError错误就是连接不成功
print("连接失败,可能用户或者密码错误!")

image-20211102033113471

插入数据

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import  pymysql # 导入库

try:
mysql = pymysql.connect(host='localhost',
user='root',
password='root',
database = 'admin') # 进入admin数据库里面
print("数据库连接生成!")

cursor=mysql.cursor()# 创建一个游标对象 cursor

Library="INSERT INTO user(id, user, password) VALUE (%s,%s,%s) " # 执行mysql语句
# user是表名

# id是要导入的字段名
# user是字段的名
# password是字段名

value=(1,"admin","passwd") # 导入的数据
cursor.execute(Library,value)


print("数据添加成功!")

# 如果不添加这个commit()这个方法就会导致数据添加失败
mysql.commit() # 对数据库的修改操作需要执行commit()方法,否则修改不生效

#cursor.close() # 关闭连接
mysql.close() # 关闭

except pymysql.err.OperationalError : # 报这个pymysql.err.OperationalError错误就是连接不成功
print("连接失败,可能用户或者密码错误!")

结果

1
2
数据库连接生成!
数据添加成功!

image-20211102034954274