zoukankan      html  css  js  c++  java
  • pymysql库的学习

    pymysql基础学习

    • mysql返回对象和python对象的转换

      • 元组转换为列表

      • datetime.date对象和字符串的转换

    • 游标和事务管理

      • 游标协调mysql的集合处理方式和python的一行一行处理

      • 事务管理还要懂得sql呀——

    pymysql只是一个对接mysql的库,sql语句才是精髓,在使用pymysql的库中,对execute(sql,arg)中的sql语句尽量不包括实际值,用arg替代

    库中Date类的时间函数

    • ctime
    • day
    • fromisocalendar
    • fromisoformat
    • fromordinal
    • fromtimestamp
    • isocalendar
    • isoformat
    • isoweekday
    • max
    • min
    • month
    • replace
    • resolution
    • strftime
    • timetuple
    • today
    • toordinal
    • weekday
    • year

    字符串和datetime.date对象的转换

    isoformat() 2000-07-03<class 'str'
    isocalendar() (2000, 27, 1) tuple对象
    isoweekday() 1-7 int  周一到周日
    weekday() 0-6
    
    详细讲解https://www.runoob.com/python/att-time-strftime.html
    
    for date in result:
        str=date.strftime('%Y-%m-%d')#位置可以自由组合,个数也可以自由组合
        #只可以转换标准的YY-MM-DD
        date=Date.fromisoformat(date) #class method
    #自由组合例子
    #   date=date.strftime('%b %d %Y')
    
    import pymysql
    #连接数据库
    db = pymysql.connect(host='localhost',user='root', password='11111111', port=3306)
    cursor = db.cursor()
    
    #创建表,只需执行一次
    cursor.execute('use spiders')
    sql = 'create table if not exists students (id varchar(255) not null, name varchar(255) not null, age int not null, primary key (id))'
    cursor.execute(sql)
    #插入
    data = {
        'id': '20120001',
        'name': 'Bob',
        'age': 20
    }
    table = 'students'
    keys = ', '.join(data.keys())
    values = ', '.join(['%s'] * len(data))
    sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)
    try:
       if cursor.execute(sql, tuple(data.values())):
           print('Successful')
           db.commit()
    except:
        print('Failed')
        db.rollback()#事务回滚
    
    #更新数据
    sql = 'UPDATE students SET age = %s WHERE name = %s'
    try:
       cursor.execute(sql, (25, 'Bob'))
       db.commit()
    except:
       db.rollback()
    
    #如果插入值重复就不插入
    sql = 'INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE'.format(table=table, keys=keys, values=values)
    update = ','.join([" {key} = %s".format(key=key) for key in data])
    sql += update
    try:
        if cursor.execute(sql, tuple(data.values())*2):
            print('Successful')
            db.commit()
    except:
        print('Failed')
        db.rollback()
    
    #删除操作
    table = 'students'
    condition = 'age > 20'
     
    sql = 'DELETE FROM  {table} WHERE {condition}'.format(table=table, condition=condition)
    try:
        cursor.execute(sql)
        db.commit()
    except:
        db.rollback()
    
    #查询数据要注意,数据量过大要迭代返回
    sql = 'SELECT * FROM students WHERE age >= 20'
    try:
        cursor.execute(sql)
        print('Count:', cursor.rowcount)
        row = cursor.fetchone() #fetchmany(size)
        while row:
            print('Row:', row)
            row = cursor.fetchone()
    except:
        print('Error')
    
    
    追风少年
  • 相关阅读:
    gridview 后台增加列
    SQL Server 触发器
    PIVOT 和 UNPIVOT 命令的SQL Server版本
    HtmlHelper.Raw,<%%>,<%:%>,<%=%>的区别及使用
    分布式搜索的面试题3
    分布式搜索的面试题2
    分布式搜索的面试题1
    消息队列的面试题7
    消息队列的面试题6
    消息队列的面试题5
  • 原文地址:https://www.cnblogs.com/lzycodinglife/p/12620187.html
Copyright © 2011-2022 走看看