Python操作mysql

想要用Python操作mysql需要引入pymysql模块

1. 下面是一个用Python写的简单的mysql查询操作

# 导入pymysql模块
import pymysql
# 获取连接
coon=pymysql.connect(host="localhost",
                     db="db_test",
                     user="root",
                     password="root",
                     port=3306,
                     charset="gbk")
# 获取游标
cursor=coon.cursor()
sql="select * from blog where name=%s"
try:
    #返回值是影响的行数
    count=cursor.execute(sql,("weather",))
    # 手动提交事务
    coon.commit()
except Exception as e:
    # 回滚数据
    coon.rollback()
print(count)

实现其他的SQL语句和上述操作差不多,这里不做介绍。

2. 下面是写的一个python操作mysql的方法,对上述步骤进行了简单的封装

 
import pymysql
coon = pymysql.connect(host="localhost", user="root", password="root", db="db_date", port=3306)

def add_update_del_seek(sql,*args):
    # print(args)
    cursor = coon.cursor()
    try:
        # count的是影响的行数
        count = cursor.execute(sql, args)
        coon.commit()
        """
        fetchall 返回所有的查询结果 fetchone只返回一条查询的结果 这里选用fetchall 
        当然你也可以用fetchone但它最多只返回一条查询语句
        """
        data = cursor.fetchall()
        # 如果是增删改的话,返回的结果是一个元组,如果是查的话返回的结果是一个嵌套的元组
        return count, data

    except Exception as e:
        coon.rollback()
    finally:
        coon.close()

此时t1的表的结构如下:

表的数据有:

由于表t1的引擎是innodb,所以在一条sql语句对某行进行操作时,是禁止其他语句对它操作的。

下面我们用add_update_del_seek( )方法对表t1进行简单的操作:

2.1 向表内增加内容

sql = "insert into t1 values(%s,%s,%s)"
print(add_update_del_seek(sql, "tom", 18, "nan"))

运行结果是:

(1, ())

此时t1内有如下数据:

2.2 修改表内的内容

修改tom的年龄

sql = "update t1 set age=19 where name=%s"
print(add_update_del_seek(sql, "tom"))

运行结果:

(1, ())

此时t1内有如下数据:

2.3 删除表的内容

删除tom的信息

sql = "delete from t1 where name=%s"
print(add_update_del_seek(sql, "tom"))

运行结果如下:

(1, ())

此时t1内有如下数据:

2.4 下面进行表的查找

t = "select * from t1 where age=%s"
print(add_update_del_seek(t, 18))

运行结果如下

(2, (('jane', 18, 'nv'), ('liming', 18, 'nan')))

3. 下面一个为mysql编写的类,为了简化Python对mysql的操作

和2的操作类似,这里不再进行相关的操作

"""
    sqlHerper ,一个python调用mysql的封装模块
    用于封装大量重复的代码,减少代码的书写

    作业:简略描述经典类和新式的类区别?
"""
import pymysql

class SqlHelper(object):

    def __init__(self, host, db, user, pwd, port=3306, charset='utf8'):
        """
        :param host:  主机ip地址或者域名
        :param db:  该主键的对应的数据库
        :param user: 该数据库的用户名称
        :param pwd: 该数据库的用户密码
        :param port:  该主键的对应的数据库的端口,默认是3306
        :param charset: 连接mysql时的编码,默认使用utf8
        """
        self.host = host
        self.db = db
        self.user = user
        self.pwd = pwd
        self.port = port
        self.charset = charset
        self.conn = None
        self.cursor = None


    def __getConn(self):
        """
            获取连接对象和游标对象
        """
        self.conn = pymysql.connect(host=self.host, db=self.db, user=self.user, password=self.pwd, port=self.port, charset=self.charset)
        self.cursor = self.conn.cursor()

    def queryOne(self, sql, params=[]):
        self.__getConn()
        count = self.cursor.execute(sql, params)
        data = self.cursor.fetchone()
        self.closeResource()
        return count, data

    def queryAll(self, sql, params=[]):
        self.__getConn()
        count = self.cursor.execute(sql, params)
        data = self.cursor.fetchall()
        self.closeResource()
        return count, data

    def update(self, sql, params=[]):
        self.__getConn()
        try:
            count = self.cursor.execute(sql, params)
            self.conn.commit()
            return count
        except Exception as e:
            self.conn.rollback()
            print("发生错误:", e)
            return None
        finally:
            self.closeResource()

    def closeResource(self):
        if self.cursor != None:
            self.cursor.close()
        if self.conn != None:
            self.conn.close()

 

Python可以使用多种库来操作MySQL数据库,其中包括PyMySQLmysqlclient。PyMySQL是一个纯Python编写的库,安装非常简单,而mysqlclient是底层使用C编写的库,安装可能会有一些问题。\[3\]你可以根据自己的需求选择其中之一进行安装和使用。 在使用PyMySQL库时,你可以使用%s作为参数占位符来执行SQL操作,这与Python自带的sqlite3模块的占位符问号(?)有所不同。如果需要更详细的文档,你可以参考PyMySQL的官方文档。\[2\] 如果你想了解更多关于Python操作MySQL的知识,可以参考一些专门的章节或教程,这些资源会更详细地介绍如何使用Python来进行MySQL数据库操作。\[1\]希望这些信息对你有所帮助! #### 引用[.reference_title] - *1* [Python操作MySQL](https://blog.csdn.net/sanylove/article/details/124166373)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [太全了——用Python操作MySQL的使用教程集锦](https://blog.csdn.net/m0_59485658/article/details/126364328)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Python操作MySql](https://blog.csdn.net/PAN_BING/article/details/120812542)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值