zoukankan      html  css  js  c++  java
  • python笔记二(mysql数据库操作)

    python2.x使用MySQLdb

    python3.x使用pymysql代替MySQLdb

    不过我使用的是python3.5,MySQLdb还是可以在python3.5使用的。

      1 #!/usr/bin/env python
      2 # _*_ coding:utf-8 _*_
      3 import pymysql
      4 import MySQLdb
      5 
      6 # 打开数据库连接
      7 db = pymysql.connect("10.35.22.91", "root", "adminadmin", "TESTDB")
      8 '''
      9 db = MySQLdb.connect(host='10.35.22.91',
     10                         user='root',
     11                         port = 3306,
     12                         passwd ='adminadmin',
     13                         db='scrapydb',
     14                         charset='utf8')
     15 '''
     16 # 使用 cursor() 方法创建一个游标对象 cursor
     17 cursor = db.cursor()
     18 
     19 # 使用 execute() 方法执行 SQL,如果表存在则删除
     20 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
     21 # 使用预处理语句创建表
     22 sql = """CREATE TABLE EMPLOYEE (
     23          FIRST_NAME  CHAR(20) NOT NULL,
     24          LAST_NAME  CHAR(20),
     25          AGE INT,  
     26          SEX CHAR(1),
     27          INCOME FLOAT )"""
     28 cursor.execute(sql)
     29 
     30 # SQL 插入语句
     31 sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
     32          LAST_NAME, AGE, SEX, INCOME)
     33          VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
     34 '''
     35 # SQL 插入语句第二种方式
     36 sql = "INSERT INTO EMPLOYEE(FIRST_NAME, 
     37        LAST_NAME, AGE, SEX, INCOME) 
     38        VALUES ('%s', '%s', '%d', '%c', '%d' )" % 
     39        ('Mac', 'Mohan', 20, 'M', 2000)
     40 '''
     41 try:
     42    # 执行sql语句
     43    cursor.execute(sql)
     44    # 提交到数据库执行
     45    db.commit()
     46 except:
     47    # 如果发生错误则回滚
     48    db.rollback()
     49 
     50 '''
     51 数据库查询操作
     52 Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
     53 fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
     54 fetchall(): 接收全部的返回结果行.
     55 rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数
     56 '''
     57 # SQL 查询语句
     58 sql = "SELECT * FROM EMPLOYEE 
     59        WHERE INCOME > '%d'" % (1000)
     60 try:
     61    # 执行SQL语句
     62    cursor.execute(sql)
     63    #print(cursor.rowcount)
     64    # 获取所有记录列表
     65    results = cursor.fetchall()
     66    for row in results:
     67       fname = row[0]
     68       lname = row[1]
     69       age = row[2]
     70       sex = row[3]
     71       income = row[4]
     72        # 打印结果
     73       print ("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % 
     74              (fname, lname, age, sex, income ))
     75 except:
     76    print ("Error: unable to fetch data")
     77 
     78 # 数据库更新操作
     79 # SQL 更新语句
     80 sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
     81 try:
     82    # 执行SQL语句
     83    cursor.execute(sql)
     84    # 提交到数据库执行
     85    db.commit()
     86 except:
     87    # 发生错误时回滚
     88    db.rollback()
     89 
     90 # 数据库删除操作
     91 # SQL 删除语句
     92 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)
     93 try:
     94    # 执行SQL语句
     95    cursor.execute(sql)
     96    # 提交修改
     97    db.commit()
     98 except:
     99    # 发生错误时回滚
    100    db.rollback()
    101 
    102 # 关闭数据库连接
    103 db.close()
    104 '''
    105 # 使用 execute()  方法执行 SQL 查询
    106 #cursor.execute("SELECT VERSION()")
    107 
    108 # 使用 fetchone() 方法获取单条数据data生成器.
    109 data = cursor.fetchone()
    110 
    111 print("Database version : %s " % data)
    112 
    113 # 关闭数据库连接
    114 db.close()
    115 '''

    附:

    %d 十进制有符号整数
    %u 十进制无符号整数
    %f 浮点数
    %s 字符串
    %c 单个字符
    %p 指针的值
    %e 指数形式的浮点数
    %x, %X 无符号以十六进制表示的整数
    %0 无符号以八进制表示的整数
    %g 自动选择合适的表示法

    错误处理

    DB API中定义了一些数据库操作的错误及异常,下表列出了这些错误和异常:

    异常描述
    Warning 当有严重警告时触发,例如插入数据是被截断等等。必须是 StandardError 的子类。
    Error 警告以外所有其他错误类。必须是 StandardError 的子类。
    InterfaceError 当有数据库接口模块本身的错误(而不是数据库的错误)发生时触发。 必须是Error的子类。
    DatabaseError 和数据库有关的错误发生时触发。 必须是Error的子类。
    DataError 当有数据处理时的错误发生时触发,例如:除零错误,数据超范围等等。 必须是DatabaseError的子类。
    OperationalError 指非用户控制的,而是操作数据库时发生的错误。例如:连接意外断开、 数据库名未找到、事务处理失败、内存分配错误等等操作数据库是发生的错误。 必须是DatabaseError的子类。
    IntegrityError 完整性相关的错误,例如外键检查失败等。必须是DatabaseError子类。
    InternalError 数据库的内部错误,例如游标(cursor)失效了、事务同步失败等等。 必须是DatabaseError子类。
    ProgrammingError 程序错误,例如数据表(table)没找到或已存在、SQL语句语法错误、 参数数量错误等等。必须是DatabaseError的子类。
    NotSupportedError 不支持错误,指使用了数据库不支持的函数或API等。例如在连接对象上 使用.rollback()函数,然而数据库并不支持事务或者事务已关闭。 必须是DatabaseError的子类。
  • 相关阅读:
    HBuilder手机Iphone运行提示“未受信用的企业级开发者”
    在阿里云服务器ubuntu14.04运行netcore
    微信图片上传
    一段sql的优化
    设计模式之单例模式(Singleton)
    PDF.NET+EasyUI实现只更新修改的字段
    操作系统进程调度之分时,优先,分时优先
    2020最新Servlet+form表单实现文件上传(图片)
    Php7+Mysql8实现简单的网页聊天室功能
    JavaSwing+Mysql实现简单的登录界面+用户是否存在验证
  • 原文地址:https://www.cnblogs.com/jieran/p/8274872.html
Copyright © 2011-2022 走看看