zoukankan      html  css  js  c++  java
  • python编程 之 PyMysql包接口,python中如何使用数据库

    1,环境介绍

    要求:使用数据库TESTDB.EMPLOYMENT

               EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。

    2,基本用法:

    import pymysql
     
    # 打开数据库连接,4个参数依次是:本地数据库,数据库用户名,密码,数据库名
    db = pymysql.connect("localhost","xxxx","xxxx","TESTDB" )
     
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
     
    # 使用 execute()  方法执行 SQL 查询 
    cursor.execute("SELECT VERSION()")    #返回1
     
    # 使用 fetchone() 方法获取单条数据.
    data = cursor.fetchone()
     
    print ("Database version : %s " % data)    #返回:DATABASE VERSION:5.7.23-0ubuntu0.16.04.1
    # 关闭数据库连接
    db.close()

        >import pymysql

        >db=pymysql.connect("localhost","testuser","test123","TESTDB" )    #连接到数据库先

        >cursor=db.cursor()    #使用cursor方法创建一个游标对象cursor,目前不是很懂

        >cursor.execute("drop table if exists EMPLOYEE")    #execute()的参数直接就是sql语言,只是不用末尾加分号而已,由此可见,这果然是个接口包。ps:真的可以删掉EMPLOYEE!厉害了

        >sql="""create table employee (FIRST_NAME CHAR(20) NOT NULL,LAST_NAME CHAR(20),AGE INT,SEX CHAR(1),INCOME FLOAT)"""

        >cursor.execute(sql)    #执行sql字符串代表的sql语言,创建一个table叫employee。 在命令行中执行的话,执行无误会返回0,

    2,增

    #!/usr/bin/python3
    import pymysql
     
    # 打开数据库连接,创建游标,开头启动数据库都是这一套,先链接数据库再设置游标
    db = pymysql.connect("localhost","xxxx","xxxx","TESTDB" )
    cursor = db.cursor()
     
    # SQL 插入语句
    sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
             LAST_NAME, AGE, SEX, INCOME)
             VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
    try:
       # 执行sql语句,此处只是预执行,不会真正插入数据,但是如果可执行就返回1,后面用commit提交
       cursor.execute(sql)
       # 提交刚刚的插入请求到数据库执行
       db.commit()
    except:
       # 如果发生错误则回滚
       db.rollback()
     
    # 关闭数据库连接
    db.close()

        特殊说明:ROLLBACK指的是【回滚】,即是在事务的运行过程中,发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有的已完成的操作全部撤销,回滚到事务开始之前的状态。

    3 查

    import pymysql
     
    db = pymysql.connect("localhost","xxxx","xxxx","TESTDB" )
    cursor = db.cursor()
     
    # SQL 查询语句
    sql = "select * from employee where income >2000"
    try:
       # 模拟执行SQL语句
       cursor.execute(sql)    #返回2
       # 获取所有记录列表
       results = cursor.fetchall()    #真正的执行查询语句,此时results是:(('Mark', 'Twn', 50, 'M', 3000.0), ('lee', 'devin', 30, 'M', 4000.0))
       #此处往下只是格式化提取results中的内容。
       for row in results:
          fname = row[0]
          lname = row[1]
          age = row[2]
          sex = row[3]
          income = row[4]
           # 打印结果
          print ("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % 
                 (fname, lname, age, sex, income ))
    except:
       print ("Error: unable to fetch data")
     
    # 关闭数据库连接
    db.close()

    特殊说明:pymysql中使用fetchone()或者fetchall()语句来提交和处理查询请求

    4,改

    import pymysql
     
    db = pymysql.connect("localhost","xxxx","xxxx","TESTDB" )
    cursor = db.cursor()
     
    # SQL 更新语句
    sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE INCOME >2000"
    try:
       # 执行SQL语句
       cursor.execute(sql)
       # 提交到数据库执行
       db.commit()
    except:
       # 发生错误时回滚
       db.rollback() 
    # 关闭数据库连接
    db.close()

    5,删

    import pymysql
    db = pymysql.connect("localhost","xxxx","xxxx","TESTDB" 
    cursor = db.cursor()
     
    # SQL 删除语句
    sql = "DELETE FROM EMPLOYEE WHERE AGE > 40"
    try:
       # 执行SQL语句
       cursor.execute(sql)
       # 提交修改
       db.commit()
    except:
       # 发生错误时回滚
       db.rollback()
     
    # 关闭连接
    db.close()
  • 相关阅读:
    epoll讲解
    Majority Element
    Excel Sheet Column Title
    Git链接到自己的Github(2)进阶使用
    Git链接到自己的Github(1)简单的开始
    直接管理内存
    Oracle 11g 编译使用BBED
    Oracle数据库该如何着手优化一个SQL
    Oracle配置数据库诊断
    Oracle 数据库重放(Database Replay)功能演示
  • 原文地址:https://www.cnblogs.com/0-lingdu/p/9482633.html
Copyright © 2011-2022 走看看