pymysql

連接數據庫

  • 連接時需要額外指定參數db
  • cursor.execute(' ') 操作SQL語句
  • SELECT VERSION() 獲得當前版本
  • CREATE DATABASE spiders DEFAULT CHARACTER SET utf8 創建數據庫
import pymysql
db = pymysql.connect(host='localhost',user=' ',password=' ',port=3306)#IP,用戶名,密碼,端口號
cursor = db.cursor()    #獲得操作游標,利用游標執行SQL語句
cursor.execute('SELECT VERSION()') #獲得當前版本
data = cursor.fetchone() #獲得第一條數據 ?
print('Database version:',data)
cursor.execute('CREATE DATABASE spiders DEFAULT CHARACTER SET utf8')//創建sriders數據庫,默認編碼utf-8
db.close()

創建表

  • PRIMARY KEY 主鍵,創建表時主要指定主鍵
  • 創建表:CREATE TABLE IF NOT EXISTS musicspider(指定字段)
import pymysql
db = pymysql.connect(host='localhost',user='root',password='密碼',port=3306,db='spiders')#連接數據庫,指定參數db
cursor = db.cursor()
sql = 'CREATE TABLE IF NOT EXISTS musicspider(songName VARCHAR(225) NOT NULL,singerName VAECHAR(225) NOT NULL,musicUrl VARCHAR(255) NOT NULL,PRIMARY KEY (songName))'
#創建表,‘字段名’‘字段類型’(大小)
#VERCHAR 變長字符串
cursor.execute(sql)
db.close()

插入數據

  • INSERT INTO table(colum1,colum2...) values(格式符1,格式符2...)
import pymysql
db = pymysql.connect(host='localhost',user='root',password='密碼',port=3306,db='spiders')#連接數據庫
cursor = db.cursor()
songName = '當年情'
singerName = '張國榮'
musicURL = 'https://i.y.qq.com/v8/playsong.html?songid=102349891&source=yqq#wechat_redirect'
sql = 'INSERT INTO musicspider(songName,singerName,musicURL) values(%s,%s,%s)'
# 異常處理,執行失敗時調用rollback執行數據回滾,相當于什么都沒發生
try:cursor.execute(sql,(songName,singerName,musicURL))db.commit() # 提交后才能實現數據插入
except:db.rollback() # 執行數據回滾
db.close()
  • 事務
    • 原子性:要么發生要么不發生,不存在進行一半的情況
    • 一致性:從一個一致性狀態到另一個一致性狀態
    • 隔離性:事務與其他并發的事務隔離,互不干擾
    • 持久性:永久性
  • 插入更新刪除操作都是對數據庫進行更改的操作,而更改操作必須是一個事務,所以操作的標準寫法:
try:cursor.execute(sql)db.commit()
except:db.rollback()
  • 動態構造字典(傳入一個字典插入數據
data = {'songName':'當年情''singerName':'張國榮''musicURL':'https://i.y.qq.com/v8/playsong.html?songid=102349891&source=yqq#wechat_redirect'
}
table = 'musicspider'
keys = ','.join(data.keys()) #字段名,用逗號分隔開
values = ','.join(['%s']*len(data)) # 占位符
sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table = table,keys = keys,values = values)
try:if cursor.execute(sql,tuple(data.values())): # sql構造占位符,調用execute需要字典鍵值作參數print("successful")db.commit()
except:print('failed')db.rollback()
db.close()

更新數據

  • 構造SQL語句,執行execute()方法,傳入元組形式的參數,執行commit提交操作
sql = 'UPDATE musicspider SET musicURL = %s WHERE songName = %s'
try:cursor.execute(sql,('*****','***'))db.commit
except:db.rollback()
db.close()
  • 字典傳值,存在時更新數據,不存在時插入數據
data = {,,}table = 
keys = 
values = sql = 'INSTRT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE'.format(table = table,keys = keys,values = values)
update = ','.join(['{key}:%s'.format(key = key) for key in data])
sql += updatetry:if cursor.execute(sql,tuple(data.values())*2):print("Successful")db.commit()
except:print("Failed")db.rollback()db.close()

刪除數據

  • 使用DELETE語句
table = #刪除目標表明
condition = #刪除條件sql = 'DELETE FROM {table} WHERE {condition}'.format{table = table,condition = condition}try:cursor.execute(sql)db.commit()
except:db.rollback()db.close()

查詢數據

  • SELECT語句
  • sql = 'SELECT * FROM {table} WHERE {condition}'
  • fetchall()和fetchone() 返回結果內部有一個偏移指針用來指向查詢結果,最開始偏移指針指向第一條數據,取出之后指針偏移到下一條數據,再取時會取到下一跳數據
sql = 'SELECT *FROM {} WHERE {}'try:cursor.execute(sql)print('count:'cursor.rowcount)row = cursor.fetchone()while row:print('row:'row)row = cursor.fetchone()
except:print('Error')

navicat連接mysql報錯1251

解決方式:更改加密方式
  1. 登錄mysql
  2. 更改加密方式
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.10 sec)
  1. 更新密碼
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';
Query OK, 0 rows affected (0.35 sec)
  1. 刷新
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.28 sec)
  1. 重新連接

轉載于:https://juejin.im/post/5ca2057ee51d4570bb53d562

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252016.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252016.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252016.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# 多線程及同步簡介示例

60年代,在OS中能擁有資源和獨立運行的基本單位是進程,然而隨著計算機技術的發展,進程出現了很多弊端,一是由于進程是資源擁有者,創建、撤消與切換存在較大的時空開銷,因此需要引入輕型進程;二是…

opencv-python單目視覺標定,簡單易用。

import cv2 import numpy as np import glob# 設置尋找亞像素角點的參數,采用的停止準則是最大循環次數30和最大誤差容限0.001 criteria (cv2.TERM_CRITERIA_MAX_ITER | cv2.TERM_CRITERIA_EPS, 30, 0.001)# 獲取標定板角點的位置 objp np.zeros((6 * 7, 3), np.f…

python多線程多進程

一、線程&進程 對于操作系統來說,一個任務就是一個進程(Process),比如打開一個瀏覽器就是啟動一個瀏覽器進程,打開一個記事本就啟動了一個記事本進程,打開兩個記事本就啟動了兩個記事本進程&#xff0c…

Spring Framework 5.1.6、5.0.13 與?4.3.23 發布

開發四年只會寫業務代碼,分布式高并發都不會還做程序員? Spring Framework 5.1.6、5.0.13 與 4.3.23 發布了。 v5.1.6 包含 49 個 bug 修復和功能改進;v5.0.13 是 5.0.x 系列的最后一個版本,包含了 25 個 bug 修復和功能改進&am…

curl命令

Curl是一種支持多種協議(http、https,ftp)等,利用url規則在命令行下工作的文件傳輸工具,還支持POST、cookies、認證、從指定偏移處下載部分文件、用戶代理字符串、限速、文件大小、進度條等特征 1.語法: cu…

單目視覺標定:世界坐標系、相機坐標系、圖像坐標系、像素坐標系——簡單粗暴,粗暴

轉:https://blog.csdn.net/chentravelling/article/details/53558096 1.正文 圖像處理、立體視覺等等方向常常涉及到四個坐標系:世界坐標系、相機坐標系、圖像坐標系、像素坐標系。例如下圖: 構建世界坐標系只是為了更好的描述相機的位置在哪…

Python基礎知識-05-數據類型總結字典

python其他知識目錄 1、一道題,選擇商品的序號。程序員和用戶各自面對的序號起始值 如有變量 googs [汽車,飛機,火箭] 提示用戶可供選擇的商品: 0,汽車1,飛機2,火箭用戶輸入索引后,將指定商品的內容拼接打印,如:用戶輸…

Python學習筆記之異常

Python用異常對象來表示異常情況,如果異常對象未被處理或捕捉,程序就會回溯(traceback)中止執行。 異常可以在出錯時自動引發,也可以主動引發。 異常被引發后如果不被處理就會傳播至程序調用的地方,直到主程…

VSFTP的使用

一、基本安裝 1.安裝服務 yum -y install vsftpd //centos Redhat apt-get install vsftpd //debian ubuntu 2.開啟服務 service vsftpd status //查看狀態,默認是關閉的 service vsftpd start 3.開機隨操作系統啟動 chkconfig vsftpd on4.添加賬號 useradd -d /…

OC Swift混編-Swift.h File not found

https://www.jianshu.com/p/f860fe1718ca 2016.09.13 11:53* 字數 266 閱讀 1935評論 1喜歡 1今天碰到個神坑,本人項目是OC項目,最近開始使用Swift開始替代.但是,在替代的已開始就出現問題了:新建swift文件,然后提示創建bridging-Hearder文件,然后swift可以使用OC代碼了.這些都…

視覺標定,再來一波!!更簡單粗暴!!!!!!

繼續!!!!!! 一、四個坐標系簡介和轉換 相機模型為以后一切標定算法的關鍵,只有這邊有相當透徹的理解,對以后的標定算法才能有更好的理解。本人研究了好長時間,幾乎每天…

深入淺出NIO之Selector實現原理

2019獨角獸企業重金招聘Python工程師標準>>> 前言 Java NIO 由以下幾個核心部分組成: 1、Buffer 2、Channel 3、Selector Buffer和Channel在深入淺出NIO之Channel、Buffer一文中已經介紹過,本文主要講解NIO的Selector實現原理。 之前進行sock…

介紹一下畫圖小能手matplotlib。

我們在做完數據分析的時候需要把分析出來的結果,做一個圖形化的形象表達,這里我們就需要用到畫圖小能手matplotlib,下面就演示一下常用的條形圖和折線圖 散點圖 散點圖的做大的作用是研究兩個變量的相關性(正相關,負相…

立體視覺標定源代碼C++,簡單粗暴!粗暴·······

疑點解答: 攝像機矩陣由內參矩陣和外參矩陣組成,對攝像機矩陣進行QR分解可以得到內參矩陣和外參矩陣。 內參包括焦距、主點、傾斜系數、畸變系數 (1) 其中,fx,fy為焦距,一般情況下&#xff…

11. 臨時表

-- 查詢5大洲國家總數 SELECT continent,COUNT(*) FROM country GROUP BY continent;-- 演示臨時表 CREATE TEMPORARY TABLE tmp_table ( continent VARCHAR(20), COUNT INT );INSERT INTO tmp_table SELECT Asia AS continent,COUNT(*) FROM country WHERE continent Asia;…

MongoDB負載信息一目了然 阿里云HDM重磅發布MongoDB監控和診斷功

2019獨角獸企業重金招聘Python工程師標準>>> 混合云數據庫管理(HDM)的統一監控、告警、診斷功能新增了對MongoDB的支持。 通過直觀的方式將MongoDB多個維度的負載信息統一整合,不僅可以清晰的查看實時負載信息,也可以方…

在iview的Table中添加Select(render)

首先對Render進行分析,在iview官方的文檔中,找到了table插入Button的例子: [javascript] view plaincopy { title: Action, key: action, width: 150, align: center, render: (h, params) > { return h(div, [ h(Butt…

JavaScript中call和apply方法

1 /*2 在js中 call和apply常用于綁定作用域3 */4 //1 簡單的綁定5 function sum(a,b){6 return ab;7 }8 //將sum的功能綁定給test2來執行9 function test2(a,b){ 10 return sum.call(this,a,b); 11 } 12 // call 和apply的區別是 apply接收數組作為參數…

工業機械人運動學正逆解,簡單粗暴!!!!!!

ur機械臂是六自由度機械臂,由D-H參數法確定它的運動學模型,連桿坐標系的建立如上圖所示。 轉動關節θi是關節變量,連桿偏移di是常數。 關節編號 α(繞x軸) a(沿x軸) θ(繞z軸&am…

python opencv立體測距 立體匹配BM算法

立體標定應用標定數據轉換成深度圖標定 在開始之前,需要準備的當然是兩個攝相頭,根據你的需求將兩個攝像頭進行相對位置的固定,我是按平行來進行固定的(如果為了追求兩個雙目圖像更高的生命度,也可以將其按一定鈍角固…