python操作 mysql

python 操作 mysql 用到的库是pymysql

pip install PyMySQL==0.9.3

通过这个类来说明python 操作mysql方式
首先DefaultConfig内容

DATABASES = {
    'default': {
        'NAME': 'XXXX',  #数据库中要操作库的名字
        'USER': 'XXXX',		# mysql登陆用户名
        'PASSWORD': 'XXXX',	# mysql登陆密码
        'HOST': 'XX.XXX.XXX.XX',# mysql服务器IP
        'PORT': XXXX,   # mysql服务端口号
    }
}
import pymysql
from config import DefaultConfig

class MySqlserver(object):
    def __init__(self,db):
        """
        :param db: 数据库名称   
        :param host: 数据库IP
        :param port: 数据库端口
        :param username: 用户名
        :param passwd: 密码
        :param dbname: 库的名称
        """
        if not DefaultConfig.DATABASES.get(db):
            raise Exception("数据库不存在")
        db_config = DefaultConfig.DATABASES.get(db)
        self.host = db_config.get("HOST")
        self.username = db_config.get("USER")
        self.passwd = db_config.get("PASSWORD")
        self.dbname = db_config.get("NAME")
        self.port = db_config.get("PORT")
    # 建表
    def create_table(self,table_name,colums):
        """
        创建表使用
        :param sql: 执行的建表语句
        :param table_name: 表名字
        :param colums: 表中列的名称与类型[["name","varchar(20)"],["age","int"]]
        :return:
        """
		#链接数据库
        db = pymysql.connect(host=self.host, user=self.username, password=self.passwd,
                 database=self.dbname, port=self.port)
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor()
        # 使用 execute() 方法执行 SQL,如果表存在则删除
        cursor.execute("DROP TABLE IF EXISTS {}".format(table_name))
        # 拼接sql语句
        words = "id int primary key not null auto_increment,"
        for colum in colums:
            words += "{} {},".format(colum[0],colum[1])
        sql = "CREATE TABLE {}({})".format(table_name,words[:-1])
        cursor.execute(sql)
        db.close()
    def insert_update_delete(self,sql):
        """
        插入,更新,删除操作
        :param sql: 执行的sql语句
        :return:None
        """
        db = pymysql.connect(host=self.host, user=self.username, password=self.passwd,
                             database=self.dbname, port=self.port)
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor()
        sql = sql
        try:
            # 执行SQL语句
            cursor.execute(sql)
            # 提交修改
            db.commit()
        except:
            # 发生错误时回滚
            db.rollback()
        # 关闭连接
        db.close()
    def query(self,sql,key_list,type=None,size=None):
        """
        查询数据库
        :param sql: 查询语句
        :param key_list: 结果列的关键字
        :param type:单条查询,多条查询,全部查询
        :param key_list: 多条查询时查询个数
        :return: [{"key1":"result1","key2":"result2"},{"key1":"result1","key2":"result2"}]
        """
        db = pymysql.connect(host=self.host, user=self.username, password=self.passwd,
                             database=self.dbname, port=self.port)
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor()
        sql = sql
        result_list = []
        try:
            # 执行SQL语句
            cursor.execute(sql)
            if not type or type == "all":
                results = cursor.fetchall()
                print(results)
                if len(results[0]) != len(key_list):
                    raise Exception("查询列与结果列数量不符")
                for result in results:
                    result_list.append(dict(zip(key_list,result)))
            elif type=="one":
                result = cursor.fetchone()
                result_list.append(dict(zip(key_list, result)))
            else:
                if size:
                    results = cursor.fetchmany(int(size))
                    for result in results:
                        result_list.append(dict(zip(key_list, result)))
                else:
                    raise Exception("size 错误")
            # 提交修改
            db.commit()
        except Exception as e:
            db.rollback()
            raise Exception(e)
        # 关闭连接
        db.close()
        return result_list

    def batch(self,sql_list):
        """
        插入,更新,删除操作
        :param sql: 执行的sql语句
        :return:None
        """
        db = pymysql.connect(host=self.host, user=self.username, password=self.passwd,
                             database=self.dbname, port=self.port)
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor()
        sql_list = sql_list
        try:
            # 执行SQL语句
            for sql in sql_list:
                cursor.execute(sql)
            # 提交修改
            db.commit()
        except:
            # 发生错误时回滚
            db.rollback()
        # 关闭连接
        db.close()


if __name__ == "__main__":
    mysqlclient = MySqlserver("default")
    # 全部查询
    #sql = "select id , userid from resume_resumetable"
    #print(mysqlclient.query(sql,["id","userid"]))
    # 建表语句
    #mysqlclient.create_table("test",[["name","varchar(20) default 'aa'"],["age","int not null"]])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值