zoukankan      html  css  js  c++  java
  • python操作mysql

    先安装pymysql
    import pymysql
    
    # 连接到数据库
    connection = pymysql.connect(host='localhost',port=3306,
    
                                 user='root',
                                 password='123',
                                 db='slb',
                                 charset='utf8',
                                 )
    
    try:
        # with connection.cursor() as cursor:
        #     # 插入新的数据
        #     sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        #     cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
        #
        # # 默认情况下,连接不是自动提交。所以你必须自行保存好
        # connection.commit()
    
        with connection.cursor() as cursor:
            # 读取单个记录
            sql = "SELECT * FROM slb.slb_machine_maintain"
            cursor.execute(sql)
            result = cursor.fetchone()
            print(result)
    finally:
        connection.close()

    from DBUtils.PooledDB import PooledDB
    pool = PooledDB(pymysql,30, host="127.0.0.1", user='root',passwd='root1234', db='slb', port=3306, charset="utf8")
    
    def exec_sql(method, sql):
        if len(method) == 0 or len(sql) == 0:
            return {'status': -1, 'msg': 'sql or method 不能为空'}
    
        conn = pool.connection()
    
        try:
            with conn.cursor() as cursor:
                if method == 'select':
                    cursor.execute(sql)
                    data = cursor.fetchall() #data =('ding', 28), ('shaf', 25), ('akif', 32) select返回查询结果的元组
                    if len(data) == 0:
                        res = {'status': 0, 'msg': '查询结果为空'}
                        return res
    
                    res = {'status': 1, 'msg': data}
    
                    return res
    
                elif method == 'insert' or 'update' or 'delete':
                    data = cursor.execute(sql)
                    print('返回的data:', data)
                    conn.commit()
                    if method == 'insert': # data结果为int, insert操作返回影响的行数
                        print('data = %s'%data)
    
                    if method == 'update':
                        print('data = %s'%data) #data结果为int, update操作返回影响的行数
    
                    if method == 'delete':
                        print(type(data)) #<class 'int'>
                        print('data = %s'%data)  #data结果为int, update操作返回影响的行数
                    res = {'status': 1, 'msg': data}
                    return res
                else:
                    res = {'status': -1, 'msg': '无此操作'}
                    return res
                conn.close()
    
        except Exception as e:
            conn.rollback()  # 发生错误时回滚
            res = {'status': -1, 'msg': '执行sql:%s 发生异常!!:%s' % (sql, e)}
            return res
    
    
    print(exec_sql('delete', 'delete from dyf_test_table1 where age = 100'))
  • 相关阅读:
    数据结构--线性表顺序存储(顺序表)
    图论--双连通分量--点双连通模板
    C++ 模板(template) 的定义
    图论--网络流--最大流 HDU 2883 kebab(离散化)
    图论--网络流--最小割 HDU 2485 Destroying the bus stations(最短路+限流建图)
    图论--网络流--最大流 HDU 3572 Task Schedule(限流建图,超级源汇)
    图论--网络流--最大流--POJ 1698 Alice's Chance
    CodeForces 709C Letters Cyclic Shift
    CodeForces 709B Checkpoints
    CodeForces 709A Juicer
  • 原文地址:https://www.cnblogs.com/dingyunfeng/p/11003867.html
Copyright © 2011-2022 走看看