1.批量增
使用mysql向數據庫中批量插圖數據:
conn = pymysql.connect( host='127.0.0.1', port=3306, user='root', password='*******', database='wangyi') cur = conn.cursor(pymysql.cursors.DictCursor)
這里的cur指的是游標。游標是映射在結果集中一行數據上的位置實體,有了游標,用戶就可以訪問結果集中的任意一行數據了,
將游標放置到某行后,即可對該行數據進行操作。然而這些都是mysql內部的事情了,我們只需要知道要寫上這么兩句話,
在執行sql語句前實例化一個游標對象,並在執行完sql語句提交后,關掉這個游標就好了。
try: sql = "insert into news(title, content, keyword,type) values(%s, %s, %s,%s);" # 數據庫中有id字段,使用executemany 向數據庫中提交! print(sql) ret = self.cur.executemany(sql,[(item['new_title'],item['new_content'],word,type)])# 執行sql 語句
#有幾個占位符 列表里面的元組就應該有幾個元素,否則的就存不進去,
#如果數據庫里面有id 字段,而這里的sql語句中又沒有寫id字段,那么在用execute方法執行sql語句的時候,會報錯!!!!
#因此就用 executemany 這樣提交數據才會成功1
rint(ret) self.conn.commit() # 提交數據 res = self.cur.fetchall() # 返回插入的結果 except: self.conn.rollback() # 回滾
#執行完之后
cur.close()
conn.close()
2.使用mysql數據庫——刪、改
#刪除:
cur.execute('delete from teacher where tname="cting";')
# 修改
cur.execute('update 表名 set 字段名 = 值,字段名 = 值 where 條件;')
3.使用mysql數據庫——查
3.1:fetchone
cur = conn.cursor(pymysql.cursors.DictCursor) # 設置返回的數據類型是字典
ret = cur.fetchone() # 這個語句執行一次返回一個結果
ret = cur.fetchone() # 可以多次執行
3.2: fetchmany
3.3:fetchall
4.mysql的三大范式:
第一范式:確保每列的原子性(強調的是列的原子性,即列不能夠再分成其他幾列). 如果每列(或者每個屬性)都是不可再分的最小數據單元(也稱為最小的原子單元),則滿足第一范式. 例如:顧客表(姓名、編號、地址、……)其中"地址"列還可以細分為國家、省、市、區等。 第二范式:在第一范式的基礎上更進一層,目標是確保表中的每列都和主鍵相關(一是表必須有一個主鍵;二是沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的部分) 如果一個關系滿足第一范式,並且除了主鍵以外的其它列,都依賴於該主鍵,則滿足第二范式. 例如:訂單表(訂單編號、產品編號、定購日期、價格、……),"訂單編號"為主鍵,"產品編號"和主鍵列沒有直接的關系,即"產品編號"列不依賴於主鍵列,應刪除該列。 第三范式:在第二范式的基礎上更進一層,目標是確保每列都和主鍵列直接相關,而不是間接相關(另外非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴). 如果一個關系滿足第二范式,並且除了主鍵以外的其它列都不依賴於主鍵列,則滿足第三范式. 為了理解第三范式,需要根據Armstrong公里之一定義傳遞依賴。假設A、B和C是關系R的三個屬性,如果A-〉B且B-〉C,則從這些函數依賴中,可以得出A-〉C,如上所述, 依賴A-〉C是傳遞依賴。 例如:訂單表(訂單編號,定購日期,顧客編號,顧客姓名,……),初看該表沒有問題,滿足第二范式,每列都和主鍵列"訂單編號"相關,再細看你會發現"顧客姓名"和"顧客 編號"相關,"顧客編號"和"訂單編號"又相關,最后經過傳遞依賴,"顧客姓名"也和"訂單編號"相關。為了滿足第三范式,應去掉"顧客姓名"列,放入客戶表中。