• 人生苦短_我用Python_pymysql库对Mysql数据库操作_009


    # coding=utf-8
    
    import pymysql
    
    '''
    数据库的登录信息:
        config={
            'host':'118.126.108.xxx',  # :主机
            'user':'python',  # :用户名
            'password':'pythonxxx',    #:密码
            'port':3306,    # :端口
            'database':'test_demo'    # :库名
        }
    
    
    '''
    
    config = {
        'host': '118.111.299.173',  # :主机
        'user': 'python',  # :用户名
        'password': 'python111',  #:密码
        'port': 3306,  # :端口
        'database': 'test_mmr'  # :库名
    }
    
    # : 登录上mysql
    cnn = pymysql.connect(**config)  # kwargs
    
    # 游标   --->>cursor  ->获取操作数据库的权限
    cursor = cnn.cursor()
    
    # 增删改查 --->对于用户来说,查询/新增/更新/删除操作是经常用的
    
    # 查询: select
    sql = 'SELECT * FROM  student a WHERE a.id=2 '
    
    # 传参 :  元组
    
    '''
    查询sql的传参必须是以元组的形式传参
    '''
    # -----------
    '''
    元组传参
    :  单个参数
    sql = 'select * from  student a WHERE a.id=%s'
    data = (2,)
    cursor.execute(sql, data)
    
    :  多个参数
    sql_1 = 'select * from  student s WHERE s.id=%s and s.age=%s'
    data = (2, 20)
    cursor.execute(sql_1, data)
    '''
    
    '''
    单条插入语句  insert
    如果是insert语句的话,cursor.execute(sql,data)
    一定要后面加上Commit提交操作
    sql_insert = 'INSERT INTO  student(age,name) VALUES (%s,%s)'
    data = (19, 'mr.chen')
    cursor.execute('commit')
    
    多条插入语句  insert,cursor.executemany方法
    以列表的类型插入
    insert_datas = [(12, 'mr.chen1'), (13, 'mr.chen2')]
    sql_insert = 'INSERT INTO student(age,name) VALUES (%s,%s)'
    # 执行语句
    cursor.executemany(sql_insert, insert_datas)
    cursor.execute('commit')
    
    # dict 字典传参方式
    sql_insert_dict='INSERT INTO student(age,name) VALUES (%(age)s,%(name)s)'  # 为什么要这样写?,因为字典是无序的,要通过key去指定
    dict_data={'age':20,'name':'ChenYs'}
    cursor.execute(sql_insert_dict, dict_data)
    cursor.execute('commit')
    
    
    '''
    
    sql_insert_dict = 'INSERT INTO student(age,name) VALUES (%(age)s,%(NAME)s)'  # 为什么要这样写?,因为字典是无序的,要通过key去指定
    dict_data = {'age': 29, 'name': 'ChenYs.1'}
    cursor.execute(sql_insert_dict, dict_data)
    # cursor.execute(sql)
    cnn.commit()
    # fetchone,fetchall 读取sql语句执行的结果
    # res_sql_one = cursor.fetchone()
    # res_sql_all = cursor.fetchall()
    
    # :针对的是查询结果
    # fetchone :执行一条sql语句
    # fetchall :执行多条sql语句
    # 如果查询结果对象有多条数据的话,一定要用fetchall,
    # 不然用fetchone的话,只能从查询结果中读取一条数据出来,还会返回错误提示还有剩余数据未读
    # print("one的数据:", res_sql_one)
    # print("all的数据:", res_sql_all)
    
    cursor.close()  # : 关闭游标
    cnn.close()  # :  关闭数据库连接
    
    '''
    Ps:
        (select)   查询sql传参只能以元组的形式传,用fetchone和fetchall方法查看执行结果(fetchone/fetchall只适合查询)
        
        (insert)   单条插入sql传参也是以元组的形式传,insert_data=('param_a','param_a')
                   多条插入sql传参是以列表的形式传,insert_data_s=[('param_a','param_b'),('param_aa','param_bb')]
                   最后是用cursor.executemany()方法
                   单条插入sql传参也支持dict的形式传,dict_data = {'age': 20, 'name': 'ChenYs'}
        
    Update,Delete同Inset语句一个道理
    '''
  • 相关阅读:
    右滑返回上一页
    flutter 启动图
    [题解]NOIP2014
    [题解]LightOJ1289 LCM from 1 to n
    [题解]CodeForces442B Andrey and Problem
    [题解]HDU4035 Maze
    [题解]CodeForces#290(div1)
    SCP-bzoj-1078
    SCP-bzoj-1068
    SCP-bzoj-1054
  • 原文地址:https://www.cnblogs.com/mrchenyushen/p/9211610.html
Copyright © 2020-2023  润新知