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()
  • 相关阅读:
    【POJ 1958】 Strange Towers of Hanoi
    【HNOI 2003】 激光炸弹
    【POJ 3263】 Tallest Cow
    【POJ 2689】 Prime Distance
    【POJ 2777】 Count Color
    【POJ 1995】 Raising Modulo Numbers
    【POJ 1845】 Sumdiv
    6月16日省中集训题解
    【TJOI 2018】数学计算
    【POJ 1275】 Cashier Employment
  • 原文地址:https://www.cnblogs.com/0-lingdu/p/9482633.html
Copyright © 2011-2022 走看看