• Python mysql操作


    操作系统:MAC

    python3下pymysql替代了以前的MySQLdb

    首先创建一个数据库:

    """
    创建一个database
    """
    import pymysql
    
    conn = pymysql.connect(host='localhost', user='root', passwd='123456')
    cursor = conn.cursor()
    #创建database
    cursor.execute("create database fred_db")
    #删除database
    #cursor.execute("drop database fred_db")
    conn.close()
    创建一个database

    上面代码创建了一个fred_db的数据库,然后创建数据表table,并插入一行数据:

    """
    新建数据表,并插入一条数据
    """
    import pymysql
    
    conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='fred_db')
    cursor = conn.cursor()
    #创建数据表table
    cursor.execute("create table user(id int, name varchar(20), password varchar(20))")
    
    #插入一条数据
    cursor.execute("insert into user values('1', 'Fred', '123456')")
    
    #关闭游标
    cursor.close()
    #提交事务,在向数据库插入一条数据时必须有这个方法,否则数据不会被真正的插入
    conn.commit()
    conn.close()
    新建数据表,并插入一条数据

    还可以一次性插入多条数据:

    """
    一次性插入多条记录
    """
    import pymysql
    
    conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='fred_db')
    cursor = conn.cursor()
    #创建数据表table
    #cursor.execute("create table user(id int, name varchar(20), password varchar(20))")
    
    #插入一条数据
    #cursor.execute("insert into user values('1', 'Fred', '123456')")
    
    #一次性插入多条记录
    sqli = "insert into user values(%s, %s, %s)"
    
    cursor.executemany(sqli, [
        ('2', 'Eric', '123'),
        ('3', 'Gaby', '123'),
        ('4', 'David', '123'),
    ])
    
    #关闭游标
    cursor.close()
    #提交事务,在向数据库插入数据时必须有这个方法,否则数据不会被真正的插入
    conn.commit()
    conn.close()
    一次性插入多条记录

    同时还可以查询已经插入的数据:

    """
    查询数据
    """
    import pymysql
    
    conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='fred_db')
    cursor = conn.cursor()
    
    #显示table中有几条数据
    numbers = cursor.execute("select * from user")
    print(numbers)
    
    #只能获取一条数据
    #result = cursor.fetchone()
    #print(result)
    
    #打印表中的所有数据
    info = cursor.fetchmany(numbers)
    for item in info:
        print(item)
    
    cursor.close()
    conn.commit()
    conn.close()
    查询数据

    执行事务

    事务机制可以确保数据一致性。

    事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

    • 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
    • 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
    • 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
    • 持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

    对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。

    commit()方法游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。

    补充:

    connect函数的常用参数

    user #用户名

    password #用户密码

    host #主机名

    database #数据库名

    connect函数会返回连接对象,连接对象方法

    close() #关闭连接之后,连接对象和它的游标均不可用

    commit() #如果支持的话就提交挂起的事务,否则不做任何事

    rollback() #回滚挂起的事务(可能不可用)

    cursor() #返回连接的游标对象

    游标对象方法

    close() #关闭游标

    execute(oper[,params]) #执行SQL操作,可能使用参数

    executemany(oper,pseq) #对序列中的每个参数执行SQL操作

    fetchone() #把查询的结果集中的下一行保存为序列,或者+ None

    fetchmany([size]) #获取查询结果集中的多行,默认为1

    fetchall() #将所有(剩余)的行作为序列的序列

  • 相关阅读:
    HDU 1754 I Hate It (线段树)
    HDU 1394 Minimum Inversion Number (树状数组)
    天梯赛 L2-012 关于堆的判断 (二叉树)
    HDU 1166 敌兵布阵 (树状数组 单点修改+区间查询)
    [leetcode-77-Combinations]
    [leetcode-101-Symmetric Tree]
    [leetcode-21-Merge Two Sorted Lists]
    [leetcode-109-Convert Sorted List to Binary Search Tree]
    [leetcode-507-Perfect Number]
    [leetcode-537-Complex Number Multiplication]
  • 原文地址:https://www.cnblogs.com/fredkeke/p/6363399.html
Copyright © 2020-2023  润新知