mysql事务与交互

事务

原子性  一致性  隔离性  持久性

未提交(Read uncommitted)  1 
	 一个事务就读到另一个事务未提交的数据  脏读
	   
读提交(read committed)    2  
	一个事务要等另一个事务提交后才能进行读取
可重复读(repeatable read)  3  
	   幻读
和串行化(Serializable)    4    排队

1, 2, 3, 4代表等级

等级越高,效率越低

begin; # 开启事务

操作表格的代码

commit; # 提交事务

rollback; # 事务回滚 (撤销事务)

python与mysql交互

db_config = {
    'host':'127.0.0.1',
    'port':3306,
    'user':'root',
    'password':'qwe123',
    'db':'python3',
    'charset':'utf8',
}   

# 安装pymysql库
# pip install pymysql -i https://pypi.douban.com/simple

# 获取连接对象
conn = pymysql.Connect(**db_config)  # host='127.0.0.1',port=3306

# 创建游标对象
cur = conn.cursor()

try:
    # sql = 'select * from students'

    sql = 'insert into students values("20230110"," qiye666",18,"2023-01-10")'

    # 执行sql语句
    cur.execute(sql)

except Exception as e:
    print(e)
    conn.rollback() # 回滚事件
else:
    conn.commit()  # 提交事件,用连接对象进行调用,插入数据必须要调用
finally:
    # 显示一条数据
    # print(cur.fetchone())  # 类似next()
    # print(cur.fetchmany(5))
    cur.close() # 先关闭游标
    conn.close() # 最后关闭连接

视图

视图是什么?

视图就是一条查询语句! 是一张虚拟的表

视图只是作为查询使用

无法更新复杂的查询语句

定义视图

create view  视图的名字 as select 语句

查看视图

show tables;

使用视图

select * from 视图的名字

删除视图

drop view 视图的名字

实战:

用类封装 mysql 的查询操作  通过参数控制是否使用多查询!
import pymysql


class MySQLDatabase:
    def __init__(self, host, user, password, database):
        self.host = host
        self.user = user
        self.password = password
        self.database = database
        self.connection = None

    def connect(self):
        self.connection = pymysql.connect(
            host=self.host,
            user=self.user,
            password=self.password,
            database=self.database,
            charset='utf8mb4'
        )

    def close(self):
        if self.connection:
            self.connection.close()

    # 使用multi参数,指的是是否可以使用多条sql语句进行查询,True代表可以,False代表不可以
    def execute_query(self, query, multi):
        if self.connection is None:
            self.connect()

        if multi:
            cursor = self.connection.cursor()
            statements = query.split(";")
            multi_result = []
            for statement in statements:
                trim_statement = statement.strip()
                if trim_statement:
                    cursor.execute(trim_statement + ";")
                    multi_result.append(cursor.fetchall())
            return multi_result
        else:
            cursor = self.connection.cursor()
            cursor.execute(query)
            single_result = cursor.fetchall()
            return single_result



# 示例使用
if __name__ == "__main__":
    db = MySQLDatabase('localhost', 'root', '123456', 'english_word_database')

    db.connect()

    # 单查询示例
    single_query = "SELECT * FROM speaking_and_listening_lesson1_word LIMIT 10"
    single_result = db.execute_query(single_query, False)
    print("Single Query Result:", single_result)

    # 多查询示例
    multi_query = """
    SELECT * FROM speaking_and_listening_lesson1_word LIMIT 5;
    SELECT * FROM speaking_and_listening_lesson2_word LIMIT 5;
    """
    multi_result = db.execute_query(multi_query, True)
    print("Multi Query Result:", multi_result)
    db.close()

Single Query Result: ((1, 'primary-level', '小学教育'), (2, 'secondary-level', '中学教育'), (3, 'tertiary-level', '高等教育'), (4, 'vocational education', '职业教育'), (5, 'vocational training', '职业教育'), (6, "bachelor's degree", '本科学位'), (7, "master's degree", '本科学位'), (8, 'doctoral degree', '本科学位'), (9, 'diploma', '毕业证书'), (10, 'certificate', '技能证书'))
Multi Query Result: [((1, 'primary-level', '小学教育'), (2, 'secondary-level', '中学教育'), (3, 'tertiary-level', '高等教育'), (4, 'vocational education', '职业教育'), (5, 'vocational training', '职业教育')), ((1, 'academic qualifications', '学历'), (2, 'academic performance', '成绩'), (3, 'foreign language skills', '外语技能'), (4, 'communcation skills', '沟通技能'), (5, 'work experience', '工作经验'))]

总结:

以上就是一些关于mysql的事务与交互的使用, 如果有哪里不懂的地方,可以把问题打在评论区, 欢迎大家在评论区交流!!!
如果我有写错的地方, 望大家指正, 也可以联系我, 让我们一起努力, 继续不断的进步.
学习是个漫长的过程, 需要我们不断的去学习并掌握消化知识点, 有不懂或概念模糊不理解的情况下,一定要赶紧的解决问题, 否则问题只会越来越多, 漏洞也就越老越大.
人生路漫漫, 白鹭常相伴!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值