Bootstrap

【Python进阶——pymysql:利用python处理mysql】

前置任务
pip install pymysql

在这里插入图片描述

关于数据库的连接关闭,确认事务等
from pymysql import Connection

# 获取到MySQL数据库的链接对象
pm = Connection(
    host='localhost',  # 主机名(或IP地址)
    port=3306,  # 端口,默认3306
    user='root',  # 账户名
    password='520999'  # 密码
    autocommit=True   #设置任意操作都可以自动提交而不需要插入一次数据就写个pm.commit()
)

# 打印MySQL数据库软件信息,正常显示则连接成功
print(pm.get_server_info())  # 8.0.27

#如果有需要确认的,且没有写autocommit=True,如插入操作
pm.commit()
# 注意如果不确认插入操作,则仅仅在python中可以读出数据,实则并没有真提交在数据库里,也就是数据库里没有发生插入行为,没有东西,只py可以读

# 一定要关闭数据库的链接(文件操作也是如此)
pm.close()
增删改查语句
游标对象=连接对象.cursor()
游标对象.execute("SQL的增删改查语句")
#如果涉及到数据变动(增删改),且连接对象没有配置自动连接autocommit,则还需要附带
游标对象.commit()
"""pymysql在执行数据插入或其它产生数据更改的SQL语句时默认是需要提交更改的,即,需要通过代码“确认”这种更改行为。"""
from pymysql import Connection

# 获取到MySQL数据库的链接对象
pm = Connection(
    host='localhost',  # 主机名(或IP地址)
    port=3306,  # 端口,默认3306
    user='root',  # 账户名
    password='520999',  # 密码
    # autocommit=True   
)
# 打印MySQL数据库软件信息,正常显示则连接成功
print(pm.get_server_info())  # 8.0.27

# 获取游标对象,再用对象的方法先后选择数据库,创建表,并且不似MySQL,python中的sql语句写在execute("")中且可以不加分号
py = pm.cursor()
pm.select_db("dbs1")  # 选择dbs1数据库,相当于mysql里use dbs1;
py.execute(" CREATE TABLE t1(id INT,tname VARCHAR(10),tage INT,tgender CHAR(1));")#执行后发现mysql的dbs1数据库中有一个表叫t1
py.execute("INSERT INTO t1 VALUES(001, '小222明2', 19, '男'),(002, '小222刚', 20, '女')")
pm.commit()  # 注意是连接对象pm而非游标对象py
py.execute("select * from t1")

results: tuple = py.fetchall()  # 元组数据不可改变
for item in results:
    print(item)
# 关闭到数据库的链接
pm.close()

在这里插入图片描述

改进,将大量的SQL写入文件,联合自写的文件调用包模块函数,取代上述功能
from pymysql import Connection
from my_tools.file_tools import openfile  # 引入自写的文件打开函数
pm = Connection(
    host='localhost', 
    port=3306,  
    user='root', 
    password='520999',  
    autocommit=True   #设置任意操作都可以自动提交而不需要插入一次数据就写个pm.commit()
)
print(pm.get_server_info())  # 8.0.27

py = pm.cursor()
pm.select_db("dbs1")
py.execute(" CREATE TABLE t1(id INT,tname VARCHAR(10),tage INT,tgender CHAR(1));")

#读取SQL语句文件,将文件内容即SQL语句存在字符串sql1中,放入execute读取也可成功
f = openfile("sql1.txt", "r")
sql1 = f.read()
py.execute(sql1)

py.execute("select * from t1")

results: tuple = py.fetchall()
for item in results:
    print(item)

pm.close()

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

;