二.參考安裝方法:
2)連線資料庫
安裝好mysql後,先嘗試連線一下資料庫。
假設mysql在本地執行,使用者名為root,密碼為123,執行埠是3306
這裡利用pymysql連線mysql,然後建立乙個新的資料庫,名字為spiders
import pymysql
db=pymysql.connect(host='localhost',user='root',password='123',port=3306)
cursor=db.cursor()
cursor.execute('select version()')
data=cursor.fetchone()
print('database version:',data)
cursor.execute("create database spiders default character set utf8")
db.close()
這裡通過pymysql的connect()方法宣告乙個mysql連線物件db,此時需要傳入mysql的host(即ip)。由於mysql在本地執行,所以傳入的是localhost。如果mysql在遠端執行則傳入其公網ip。
連線成功後,需要呼叫cursor()方法獲得mysql的操作游標,利用游標來執行sql語句。第一句sql用於獲得mysql當前版本,然後呼叫fetchone()方法獲得第一條資料,也就得到了版本號。第二句sql執行建立資料庫的操作,資料庫名字為spiders,預設編碼為utf-8.
3)建立表
一般來說,建立資料庫的操作只需要執行一次就好了。當然,我們也可以手動建立資料庫。
接下來,新建乙個資料**students,此時執行建立**的sql語句即可。
import pymysql
db=pymysql.connect(host='localhost',user='root',password='123',port=3306,db='spiders')
cursor=db.cursor()
sql='create table if not exists studengts (id varchar(255) not null,name varchar(255) not null,age int not null,primary key(id))'
cursor.execute(sql)
db.close()
執行之後,我們便建立了乙個名為students的資料表。
4)插入資料
下一步就是要插入資料,例如,爬取到乙個學生的資訊,學號為00000001,名字為jan,年齡為20.
import pymysql
id='00000001'
user='jan'
age=20
db=pymysql.connect(host='localhost',user='root',password='123',port=3306,db='spiders')
cursor=db.cuesor()
sql='insert into students(id,name,age) values(%s,%s,%s)'
try:
cursor.execute(sql,(id,name,age))
db.commit()
except:
db.rollback()
動態構造
data=
table='students'
keys=', '.join(data.keys())
values=', ',() values ()'.format(table=table,keys=keys,values=values)
try:
if cursor.execute(sql,tuple(data.values())):
print('successful')
db.commit()
except:
print('falied')
db.rollback()
db.close()
這裡我們傳入的資料是字典,並將其定義為data變數。**也定義為變數table。接下來,就需要構造乙個動態的sql語句了。
首先,需要構造插入的字段的id,name,age。這裡只需要將data的鍵名拿過來,然後用逗號分割就即刻。所以』, '.join(data.keys())的結果就是id,name,age,然後構造多個%s當作佔位符,有幾個欄位就構造幾個。
5)更新資料
資料更新操作是執行sql語句,最簡單的方式就是構造乙個sql語句,然後執行。
sql='update students set age =%s where name=%s'
try:
cursor.execute(sql,(25,'bob'))
db.commit()
except:
db.rollback()
db.close()
這裡同樣是使用佔位符的方式構造sql,然後執行execute語法,傳入元組形式的引數,同樣執行commit()方法執行操作。
但是實際在資料的抓取過程中,大部分情況需要插入資料,但是我們關心的是會不會出現重複的資料,如果出現了,我們希望更新資料而不是重新儲存一次。另外,就像前面所說的動態構造sql的問題,所以這裡可以在實現一種去重的方法,如果資料存在,則更新資料,如果資料不存在,則插入資料。
data=
table='students'
keys=', ',join(data.keys())
values=', '.join(['%s']*len(data))
sql='insert into () values () on duplicate key update'.format(table=table,keys=keys,values=values)
update=','.join([" =%s".format(key=key) for key in data])
sql+=update
try:
if cursor.execute(sql,tuple(data.values())*2):
print('successful')
db.commit()
except:
print('failed')
db.rollback()
db.close()
這裡構造的sql語句其實是插入語句,但是我們在後面加了on duplicate key update.這行**的意思是如果主鍵存在,就執行更新操作。
6)刪除資料
刪除操作相對簡單,直接使用delete語句即可,只需要指定要刪除的目標表名和刪除檔案,而且任然需要使用db的commit()方法才能生效。
table='students'
condition='age>20'
sql='delete from where '.format(table=table,condition=condition)
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
db.close()
7)查詢資料
查詢會用到select語句。
sql='select*from students where age>=20'
try:
cursor.execute(sql)
print('count:',cursor.rowcount)
one=cursor.fetchone()
print('one:',one)
results=cuesor.fetchall()
print('result:',results)
print('results type:',type(results))
for row in results:
print(row)
except:
print('error')
這裡我們構造了一條sql語句,將年齡20歲以上的學生查詢出來,然後傳給execute()方法。注意這裡不需要db的commit()方法。接著呼叫cursor的rowcount屬性獲取查詢結果,然後我們呼叫了fetchone()方法,這個方法可以獲取結果的第一條資料,返回結果是元組形式,元組的元素順序更欄位一一對應,即第乙個元素就是第乙個欄位id,第二個元素就是第二個欄位name,以此類推,隨後,我們又呼叫了fetchall()方法,它可以得出結果的所有資料。
這裡需要注意乙個問題,這裡顯示的是3條資料而不是四條資料,fetchall()方法不是獲取所有的資料嗎?這是因為它的內部實現有乙個偏移指標用來查詢結果,最開始偏移指標指向第一條資料,取一次之後,指標漂移到下一條資料。
此外,我們還可以用while迴圈加fetchall()方法來獲取所有資料,而不是fetchall()全部一起取出來。
sql='select*from students where age >=20'
try:
cursor.execute(sql)
print('count:',cursor.rowcount)
row=cursor.fetchone()
while row:
print('row:',row)
row=cursor.fetchone()
except:
print('error')
mysql的安裝與使用
說明 本教程適用於 mysql 5.7以上版本的配置 4 初始化資料庫 以管理員的身份開啟命令視窗,執行如下命令 mysqld initialize user mysql console 在控制台訊息尾部會出現隨機生成的初始化密碼,注意複製儲存下來。5 將mysql新增到系統服務 以管理員的身份開啟...
mysql的安裝與使用
1.安裝mysql 使用命令 apt get install mysql server apt get install mysql client 安裝位於 usr include 目錄下的mysql庫的命令 apt get install libmysqlclient dev 2.在安裝好mysql...
mysql安裝與使用
安裝mysql windows 雙擊mysql80安裝 可選擇developer default或者custom 選擇伺服器配置型別 預設設定。認證方法 隨意。設定root使用者密碼和管理員使用者名稱,管理員使用者密碼。此處建議使用這種 安裝mysql linux ubuntu sudo apt g...