zoukankan      html  css  js  c++  java
  • pymysql连接数据库,实现数据库增删改查

    1.数据库连接

    # 创建连接
    def create_conn():
        import pymysql
        conn = pymysql.connect(
            host='localhost',
            port=3306,
            user='root',
            password='root',
            database='py',
            charset='utf8'
        )
        # 得到一个可以执行SQL语句并且将结果作为字典返回的游标
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        return conn, cursor
    # 关闭连接
    def close_conn(conn, cursor):
        # 关闭光标对象
        cursor.close()
        # 关闭数据库连接
        conn.close()

    2.增

    # 单条插入数据
    def InsertOneDB(sql, data):
        conn, cursor = create_conn()
        cursor.executemany(sql, data)
        conn.commit()
        close_conn(conn, cursor)
    
    sqlInsertOneDB = "insert into user444 (name,age) values (%s,%s);"
    data = [('john', 26)]
    InsertOneDB(sqlInsertOneDB, data)
    # 批量添加数据
    def InsertManyDB(sql, data):
        conn, cursor = create_conn()
        cursor.executemany(sql, data)
        conn.commit()
        close_conn(conn, cursor)
    
    data = [
        ('apollo', '28'),
        ('jack', '21'),
        ('merry', '29')
    ]
    sql = 'insert into user444(name,age) values(%s,%s);'
    InsertManyDB(sql, data)

    3.删

    # 删除数据
    def DeleteOneDB(sql, data):
        conn, cursor = create_conn()
        print(sql)
        cursor.execute(sql, data)
        conn.commit()
        close_conn(conn, cursor)
    
    # 定义将要执行的SQL语句
    sql = "delete from user333 where name=%s;"
    data = [("apollo11")]
    DeleteOneDB(sql, data)

    4.改

    # 更改数据
    def UpdataOneDB(sql, data):
        conn, cursor = create_conn()
        print(sql)
        cursor.execute(sql, data)
        conn.commit()
        close_conn(conn, cursor)
    
    sql = "update user333 set name=%s where name=%s;"
    data = ['Lily', 'jack11']
    UpdataOneDB(sql, data)

    5.查

    # 查询数据
    def SelectDB(sql, action, limit=None):
        conn, cursor = create_conn()
        cursor.execute(sql)
        if action == 'fetchone':
            ret = cursor.fetchone()  # 取一条
        elif action == 'fetchmany' and limit != None:
            ret = cursor.fetchmany(limit)  # 取三条
        else:
            ret = cursor.fetchall()  # 取全部
        for item in ret:
            print(item)
        close_conn(conn, cursor)
    
    
    # 执行查询的sql语句
    sql = "select name,age from user333;"
    # action可选值:fetchone,fetchmany,fetchall
    # fetchmany必须提供limit参数
    action = 'fetchmany'
    # 取数据库前3条数据
    SelectDB(sql, action, 3)
    # fetchall取所有数据
    SelectDB(sql, action)
    # fetchone取一条数据
    SelectDB(sql, action)

    6.创建表SQL

    create table userinfo(
      id int auto_increment primary key ,
      name varchar(32) not null unique ,
      age int(2)
    )engine =innodb default charset = utf8;
    #注意:charset='utf8' 不能写成utf-8
  • 相关阅读:
    团队项目冲刺第十天
    gradle文件配置
    idea无Android项目
    php第二次实验报告
    最长回文字串(hdu 3068)
    优先队列实现哈弗曼最小权值
    最小生成树 克鲁斯卡尔(Kruskal)算法求最小生成树
    背包问题------ 分类: ACM 2015-08-03 20:57 1人阅读 评论(0
    Cent Savings (DP) 分类: ACM dp 2015-08-0
    Judging Troubles (multiset查找) 分类: ACM STL
  • 原文地址:https://www.cnblogs.com/apollo1616/p/10268874.html
Copyright © 2011-2022 走看看