# 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語句一個道理 '''