python连接MySQL,对数据库增删改查

项目架构

项目目录

配置数据库链接信息

building_compile_config.ini 文件内容

[hd_addr]
host = ip
port = [端口]
user = [用户名]
passwd = [密码]
database = [数据库名]

building_mysql 内容

# -*- coding: utf-8 -*-
"""
@Time : 2022/10/12
@Auth : REN
@File :building_mysql.py
@IDE :PyCharm
"""
import os
import configparser
import pymysql


class building_mysql():

    def __init__(self):
        config_path = os.path.join('..', 'conf', 'building_compile_config.ini')
        # configparser读取ini配置文件模块
        cf = configparser.ConfigParser()
        # 读取section为item的键值
        cf.read(config_path)
        # opt','bdos','bdos-runner-server','bdms','py_address
        item = 'hd_addr'
        host = cf.get(item, 'host')
        port = int(cf.get(item, 'port'))
        user = cf.get(item, 'user')
        passwd = cf.get(item, 'passwd')
        database = cf.get(item, 'database')
        self.conn = pymysql.connect(
            host=host,
            port=port,
            user=user,
            passwd=passwd,
            database=database,
            cursorclass=pymysql.cursors.DictCursor,
            charset='utf8')
        self.cursor = self.conn.cursor()

    def insert_with_sql(self, sql, values):
        """
        获取数据,返回json
        :param sql:
        :return:
        """
        self.cursor.execute(sql, values)
        # cursor.execute(query, values)
        str = 'insert successful!'
        return str

    def query_with_sql(self, sql):
        """
        获取数据,返回json
        :param sql:
        :return:
        """
        self.cursor.execute(sql)
        return self.cursor.fetchall()

    def update_with_sql(self, sql):
        """
        获取数据,返回json
        :param sql:
        :return:
        """
        self.cursor.execute(sql)
        self.conn.commit()
        # return self.cursor.fetchall()
        str = 'update successful!'
        return str

    def delete_with_sql(self, sql):
        """
        获取数据,返回json
        :param sql:
        :return:
        """
        self.cursor.execute(sql)
        self.conn.commit()
        # return self.cursor.fetchall()
        str = 'delete successful!'
        return str

    def truncate_with_sql(self, sql):
        """
        获取数据,返回json
        :param sql:
        :return:
        """
        self.cursor.execute(sql)
        self.conn.commit()
        res = 'truncate successful!'
        return res

    def commit(self):
        self.conn.commit()

    def close(self):
        """
        关闭连接
        :return:
        """
        try:
            self.cursor.close()
            self.conn.close()
        except:
            pass

插入数据

# -*- coding: utf-8 -*-
"""
@Time : 2022/10/12
@Auth : REN
@File :cs.py
@IDE :PyCharm
"""
from utils.building_mysql import building_mysql
import json

def insert_db(building_mysql, table, data):
    """
    将处理过的数据数据插入到数据库中
    :param table: 表名
    :param data: 需要插入数据库的数据字典格式,例子:{k1:v1,k2:v2,k3:v3}
    :return:
    """
    keys = ', '.join(data.keys())
    values = ', '.join(['%s'] * len(data))
    sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)
    try:
        # 这里的第二个参数传入的要是一个元组
        if building_mysql.cursor.execute(sql, tuple(data.values())):
            building_mysql.conn.commit()
    except Exception as e:
        print(111)
        print(e)
        building_mysql.conn.rollback()
if __name__ == '__main__':
	mysql_util = building_mysql()
	table_name='table_name'
	# 需要插入的数据
	insert_db_date={k1:v1,k2:v2,k3:v3}
	# 调用自定义插入函数
    insert_db(mysql_util,table_name,insert_db_date)

更新数据

# -*- coding: utf-8 -*-
"""
@Time : 2022/10/12
@Auth : REN
@File :cs.py
@IDE :PyCharm
"""
from utils.building_mysql import building_mysql

def update_bd(keys, table, lis):
	'''
	keys更新条件,格式:id='123123'
	table表名
	lis需要更新的字段字典,格式:{'k1':'v1','k2':'v2',...''}
    :param table:
    :param data:
    :return:
	'''
    values = str(lis).replace("'", "").replace(": ", "='").replace("{", "").replace("}", "").replace(",", "',")
    sql = 'update {table} set {values} where {keys};'.format(table=table, keys=keys, values=values).replace(" where",
                                                                                                            "' where").replace(
        "'None'", "NULL")
    mysql_util = building_mysql()
    mysql_util.query_with_sql(sql)
    mysql_util.commit()
    mysql_util.close()
if __name__ == '__main__':
	table_name='table_name'
    keys= 'id=123456'
    # 需要更新的字段
    update_db_date={'k1''v1','k2':'v2',...''}
    # 调用自定义更新函数
    update_db(keys,table_name,update_db_date)

删除数据

# -*- coding: utf-8 -*-
"""
@Time : 2022/10/12
@Auth : REN
@File :cs.py
@IDE :PyCharm
"""
from utils.building_mysql import building_mysql

if __name__ == '__main__':
    mysql_util = building_mysql()
    sql='delete from 表名 where 条件'
    mysql_util.query_with_sql(sql)
    mysql_util.commit() # 不加不会修改数据库
    mysql_util.close()

查询数据

# -*- coding: utf-8 -*-
"""
@Time : 2022/10/12
@Auth : REN
@File :cs.py
@IDE :PyCharm
"""
from utils.building_mysql import building_mysql

if __name__ == '__main__':
    mysql_util = building_mysql()
    sql='select 字段1、字段2、... from 表名 where 条件'
    mysql_util.query_with_sql(sql)
    mysql_util.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
连接MySQL数据库可以使用Python中的MySQLdb或者pymysql等库。以下是使用pymysql库实现增删改查的示例代码。 ```python import pymysql # 连接数据库 conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='test', charset='utf8') # 插入数据 def insert_data(name, age): try: cursor = conn.cursor() sql = "INSERT INTO students(name, age) VALUES (%s, %s)" cursor.execute(sql, (name, age)) conn.commit() print('插入成功') except Exception as e: conn.rollback() print('插入失败', e) finally: cursor.close() # 删除数据 def delete_data(id): try: cursor = conn.cursor() sql = "DELETE FROM students WHERE id = %s" cursor.execute(sql, id) conn.commit() print('删除成功') except Exception as e: conn.rollback() print('删除失败', e) finally: cursor.close() # 更新数据 def update_data(id, age): try: cursor = conn.cursor() sql = "UPDATE students SET age = %s WHERE id = %s" cursor.execute(sql, (age, id)) conn.commit() print('更新成功') except Exception as e: conn.rollback() print('更新失败', e) finally: cursor.close() # 查询数据 def query_data(name): try: cursor = conn.cursor() sql = "SELECT * FROM students WHERE name = %s" cursor.execute(sql, name) results = cursor.fetchall() for row in results: id = row[0] name = row[1] age = row[2] print(f'id={id}, name={name}, age={age}') except Exception as e: print('查询失败', e) finally: cursor.close() if __name__ == '__main__': insert_data('张三', 20) delete_data(1) update_data(2, 22) query_data('张三') # 关闭连接 conn.close() ``` 以上代码连接到名为test的MySQL数据库中,对students表进行增删改查操作。其中,增加数据使用INSERT语句,删除数据使用DELETE语句,更新数据使用UPDATE语句,查询数据使用SELECT语句。使用try-except-finally结构确保代码执行过程中出现异常时能够及时关闭游标对象,回滚或提交事务,并关闭数据库连接

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值