人生苦短_我用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語句一個道理
'''
相關文章
相關標籤/搜索