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

    pip install pymysql -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

    一、数据库连接及创表

    #encoding: utf-8
    import pymysql
    # 配置基本信息
    db = pymysql.connect(
        host = '127.0.0.1',
        user = 'root',
        password = '123456',
        database = 'pymysql',
        port = 3306,
        # 有汉字的时候必须写这个
        charset='utf8'
    )
    # 建立连接
    # 获得python执行Mysql命令的方法,也就是所说的操作游标
    cursor = db.cursor()
    # 用于测试
    cursor.execute('select 1')
    result = cursor.fetchone()
    print(result)
    
    

    建立数据表

    # -*- coding = utf-8 -*-
    # @Time : 2020/9/27 14:34
    # @Author : md
    
    import pymysql
    # 配置基本信息
    db = pymysql.connect(
        host = '127.0.0.1',
        user = 'root',
        password = '123456',
        database = 'pymysql',
        port = 3306,
        # 有汉字的时候必须写这个
        charset='utf8'
    )
    # 建立连接
    # 获得python执行Mysql命令的方法,也就是所说的操作游标
    cursor = db.cursor()
    
    sql = '''
        create table student(
            id int NOT NULL AUTO_INCREMENT,
            user_id int(11) NOT NULL,
            name varchar(255) NOT NULL,
            address varchar(255) NOT NULL,
            PRIMARY KEY(id)
        )
    '''
    cursor.execute(sql)
    cursor.close()
    db.close()
    print("创建成功")
    
    

    二、插入数据

    #encoding: utf-8
    import pymysql
    # 配置基本信息
    db = pymysql.connect(
        host = '127.0.0.1',
        user = 'root',
        password = '123456',
        database = 'pymysql_test',
        port = 3306,
        charset='utf8'
    )
    # 建立连接
    cursor = db.cursor()
    sql = "insert user(username,age,password)values('cc',20,'654321')"
    # 执行sql语句
    cursor.execute(sql)
    # 关闭插入的sql语句
    db.commit()
    # 关闭连接
    db.close()
    

    如果是数据不能确定的情况下,可以使用下面这种方式

    cursor = db.cursor()
    # 即使这个字段是整型,这个时候也的用%s,
    sql = "insert user(username,age,password) values(%s,%s,%s)"
    # 在执行sql语句的时候传入数据,传入的是元组
    cursor.execute(sql,('dd',21,'111111'))
    db.commit()
    db.close()
    

    批量插入多条数据

    sql="insert into user values(%s,%s,%s)"
    insert=cur.executemany(sql,[(4,'wen',20),(5,'tom',10),(6,'test',30)])
    print ('批量插入返回受影响的行数:',insert)
    

    三、查询数据

    使用execute()函数得到的只是受影响的行数,并不能真正拿到查询的内容。cursor对象还提供了3种提取数据的方法:fetchone、fetchmany、fetchall.。每个方法都会导致游标动,所以必须注意游标的位置。

    cursor.fetchone():获取游标所在处的一行数据,返回元组,没有返回None

    cursor.fetchmany(size):接受size行返回结果行。如果size大于返回的结果行的数量,则会返回cursor.arraysize条数据。

    cursor. fetchall():接收全部的返回结果行

    1. fetchone():这个方法每次获取一条数据
    cursor = db.cursor()
    
    sql = 'select * from user'
    cursor.execute(sql)
    result = cursor.fetchone()
    print(result)
    # 这个切记
    db.close()
    
    1. fetchall():这个方法接收全部的返回结果
    cursor = db.cursor()
    sql = 'select * from user'
    cursor.execute(sql)
    
    results = cursor.fetchall()
    for result in results:
        print(result)
    db.close()
    
    1. fetchmany(size):可以获取指定条数的数据
    cursor = db.cursor()
    sql = 'select * from user'
    cursor.execute(sql)
    
    results = cursor.fetchmany(3)
    for result in results:
        print(result)
    db.close()
    

    四、删除数据

    cursor = db.cursor()
    sql = 'delete from user where id=1'
    cursor.execute(sql)
    # 关闭sql语句
    db.commit()
    db.close()
    
    

    五、更新数据

    cursor = db.cursor()
    sql = 'update user set username="未来" where id=4'
    cursor.execute(sql)
    # 关闭sql语句
    db.commit()
    db.close()
    

    注意:增,删,改的时候必须得执行db.commit()

    六、事务

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

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

    # SQL删除记录语句
    sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
    try:
       # 执行SQL语句
       cursor.execute(sql)
       # 向数据库提交
       db.commit()
    except:
       # 发生错误时回滚
       db.rollback()
    
  • 相关阅读:
    iOS9 News 应用
    swift中,Optional、?与!之间的关系
    [翻译] CotEditor
    [book] iOS 8 Swift Programming Cookbook
    便利的操作plist文件
    消除 Xcode7 中 directory not found for option 'xxxx' 警告
    点击单个cell高度变化的动画效果
    [翻译] LiquidFloatingActionButton
    一脸懵逼学习Zookeeper(动物园管理员)---》高度可靠的分布式协调服务
    一脸懵逼学习基于CentOs的Hadoop集群安装与配置(三台机器跑集群)
  • 原文地址:https://www.cnblogs.com/mengd/p/13740005.html
Copyright © 2011-2022 走看看