python操作mysql

我们知道在java中操作数据库最原始的方式是使用jdbc,那么在python中呢?

操作mysql数据库的基本步骤

  • 引入pymysql模块
  • 创建连接
  • 执行sql语句
  • 关闭连接
import pymysql

 # 1、建立连接这里的参数有点多 host:主机ip,port:端口,user:用户,password:密码,db:要连接的数据库,charset:字符集
    conn = pymysql.connect(host='39.108.7.88', port=3306,
                           user='root', password='123456',
                           db='cloudDB01', charset='utf8')
    print(conn)  # <pymysql.connections.Connection object at 0x0000000002517370>

新增数据

执行insert语句

"""
    操作mysql,插入数据
"""

import pymysql


def main():
    # 1、建立连接这里的参数有点多 host:主机ip,port:端口,user:用户,password:密码,db:要连接的数据库,charset:字符集
    conn = pymysql.connect(host='39.108.7.88', port=3306,
                           user='root', password='123456',
                           db='cloudDB01', charset='utf8')
    print(conn)  # <pymysql.connections.Connection object at 0x0000000002517370>

    # 2、拿到游标对象,发送sql语句
    try:
        with conn.cursor() as cursor:
            result = cursor.execute('insert into dept values (6,"测试部","cloudDB01")')
            if result == 1:
                print('添加数据成功')  # 实际没有添加成功,原因没有自动提交
            conn.commit()
    except Exception as e:
        print(f'失败,原因: {e}')
        conn.rollback()  # 失败就要回滚
    finally:
        conn.close()


if __name__ == '__main__':
    main()

删除数据

执行delete语句

"""
    操作mysql,删除数据
"""
import pymysql


def main():
    # 1、建立连接这里的参数有点多 host:主机ip,port:端口,user:用户,password:密码,db:要连接的数据库,charset:字符集
    conn = pymysql.connect(host='39.108.7.88', port=3306,
                           user='root', password='123456',
                           db='cloudDB01', charset='utf8')
    no = input('请输入需要删除的部门编号: ')

    # 2、拿到游标对象,发送sql语句
    try:
        with conn.cursor() as cursor:
            result = cursor.execute('delete from dept where deptno = %s', (no,))
            if result == 1:
                print('删除数据成功')  # 实际没有删除成功,原因没有自动提交
            conn.commit()
    except Exception as e:
        print(f'失败,原因: {e}')
        conn.rollback()  # 失败就要回滚
    finally:
        conn.close()


if __name__ == '__main__':
    main()

更新数据

执行update语句

"""
操作mysql,更新数据库
"""
import pymysql


def main():
    # 1、建立连接这里的参数有点多 host:主机ip,port:端口,user:用户,password:密码,db:要连接的数据库,charset:字符集
    conn = pymysql.connect(host='39.108.7.88', port=3306,
                           user='root', password='123456',
                           db='cloudDB01', charset='utf8')
    deptno = input('请输入需要更新的部门编号: ')
    dname = input('请求新的部门名字: ')
    # 2、拿到游标对象,发送sql语句
    try:
        with conn.cursor() as cursor:
            result = cursor.execute('update dept set dname=%s where deptno=%s', (dname, deptno))
            if result == 1:
                print('更新数据成功')  # 实际没有更新成功,原因没有自动提交
            conn.commit()
    except Exception as e:
        print(f'失败,原因: {e}')
        conn.rollback()  # 失败就要回滚
    finally:
        conn.close()


if __name__ == '__main__':
    main()

查询数据

执行select语句

"""
操作mysql,查询数据库
"""
import pymysql


def main():
    # 1、建立连接这里的参数有点多 host:主机ip,port:端口,user:用户,password:密码,db:要连接的数据库,charset:字符集
    conn = pymysql.connect(host='39.108.7.88', port=3306,
                           user='root', password='123456',
                           db='cloudDB01', charset='utf8')

    # 2、拿到游标对象,发送sql语句
    try:
        with conn.cursor() as cursor:
            cursor.execute('select deptno,dname,db_source from dept')
            # print(cursor.fetchall()) # 返回的是一个元组
            for row in cursor.fetchall():
                print(row)
    except Exception as e:
        print(f'失败,原因: {e}')
        conn.rollback()  # 失败就要回滚
    finally:
        conn.close()


if __name__ == '__main__':
    main()

以字典的方式接受数据并创建对象

"""
操作mysql,查询数据库
"""
import pymysql


# 定义对象类来接受参数
class Dept:
    def __init__(self, deptno, dname, db_source):
        self.deptno = deptno
        self.dname = dname
        self.db_source = db_source

    def __str__(self):
        return f'{self.deptno}\t{self.dname}\t{self.db_source}'


def main():
    # 1、建立连接这里的参数有点多 host:主机ip,port:端口,user:用户,password:密码,db:要连接的数据库,charset:字符集
    conn = pymysql.connect(host='39.108.7.88', port=3306,
                           user='root', password='123456',
                           db='cloudDB01', charset='utf8',
                           cursorclass=pymysql.cursors.DictCursor)  # 以字典的方式将元素取出

    # 2、拿到游标对象,发送sql语句
    try:
        with conn.cursor() as cursor:
            cursor.execute('select deptno,dname,db_source from dept')

            for row in cursor.fetchall():
                dept = Dept(**row)  # 解包语法
                print(dept)

    except Exception as e:
        print(f'失败,原因: {e}')
        conn.rollback()  # 失败就要回滚
    finally:
        conn.close()


if __name__ == '__main__':
    main()