# 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语句一个道理 '''