mysql與python的互動 pymysql
阿新 • • 發佈:2018-11-02
mysql與python的互動 pymysql
主鍵寫0,null,default都自動遞增
不是主鍵,預設,只能寫default
1.拆為多個表
先建立一個新的表 if not exists 如果原來不存在就建立表
寫入:insert into good_cates (name) select good_cates from good group by good_cates;
關聯替換、同步
updata goods as g inner join good_cates as c on g.at_name = c.name
set g.cat_name = c.id;
兩張表替換了也要替換欄位的名字型別
設外來鍵
alter table good add foreign key(cate_id) references good_cate(id);
取消外來鍵 alter table drop foreign key 外來鍵名稱
極少使用外來鍵,因為表的更新受外來鍵關聯,影響效率
建立插入一氣呵成
2.pymysql
讓寫的程式碼當客戶端寫sql發給server
建立連線connect 獲取遊標cursor(特殊物件用於儲存結果之類的) 記錄了已取了哪些沒有取哪些 遊標
執行命令獲取資料處理資料
關閉遊標
關閉連線
2.1查詢
execute 執行成功返回行數
fetch__查出的是一個元組 execute.fetchall
註冊登入:寫/查
2.2 新增修改刪除
要修改資料庫,所以要提交
commit提交,只有提交了資料庫才會改動
conn.commit()
conn.rollback() 返回取消不提交
但是隻要有execute increment就會遞增
3.防止sql注入
百度一下了解更多 wooyun
不讓使用者拼接字串
pymysql添加了構造引數列表
把要輸入的資料放入列表
sql語句的引數化,可以有效防止sql注入
安全的方式 # 構造引數列表 params = [find_name] # 執行select語句,並返回受影響的行數:查詢所有資料 count = cs1.execute('select * from goods where name=%s', params) # 注意: # 如果要是有多個引數,需要進行引數化 # 那麼params = [數值1, 數值2....],此時sql語句中有多個%s即可