MySQL簡單操作 python 資料庫驅動

2021-09-26 02:15:06 字數 2818 閱讀 8310

1.pymysql 是以專門用於操作mysql的資料模組。與django框架不同,它可以直接將**寫在.py的檔案中。

import  pymysql

connection=pymysql.connect(host='127.0.0.1',post=3306,user='root',

password='root',db='test') #建立資料庫的連線,使用者和密碼都是'root',使用的資料庫是'test'

cursor=connection.cursor() #建立游標

cursor.execute('原生的sql語句') #直接執行sql語句、

connection.commit() #游標提交

cursor.close()

connection.close()

假如需要引數的傳遞,則必須為:

inp=input("請輸入班級:")

r=cursor.execute('insert into test(name) values (%s)',inp)

如果是利用字串進行拼接完成sql的操作,則很可能會被sql注入(絕對禁止)

執行一條行資料是利用r=cursor.execute(),執行多條則是r=cursor.executemany()

r=cursor.executemany('insert into test(gender,id,name) values (%s,%s,%s)',result1)

connection.commit()

print(r)---->r不是顯示cursor的執行內容,是顯示cursor執行收影響的行數。(坑)

其中,result是乙個可迭代的元組型別,result=( () , () , () )根據順序被一對一對應。

乙個是execute/乙個是executemany(「多條資料操作執行」)。result放進去做乙個迴圈新增

(注意:)在利用pymsql驅動做資料庫操作時,增、刪、改都是需要connection.commit()

但是查(select)是不需要的。可以直接cursor.execute()執行。

r=cursor.execute('select * from test')

print(r) # 這個結果會顯示受影響的行數,但不會顯示表的結果。

result=r.fetchall() #顯示以元祖為單位的結果

result=r.fetchone() #顯示一條結果

result=r.fetchmany(指定條數)

cursor.execute('select * from test') #將結果全部放到記憶體中
操作fetchall()和fetchone()時,一定要考慮指標的位置。

當cursor.execute(『select * from test』)後result1=cursor.fetchall()在進行

result2=cursor.fetchone()時,顯示結果為none。

result1

結果1result2

none

原因是result1操作後,指標預設移到最後乙個位置,再去找資料就會發現已經沒有資料了.

這個時候就需要利用cursor.scroll(num,mode)來移動游標位置

cursor.scroll(1,mode='relative') #相對位置的移動 

cursor.scroll(-1,mode='relative')

相對位置移動舉例子,當前位置在2 則cursor.scroll(1,mode='relative')就是在2的基礎上向下移動乙個單位,變成3

cursor.scroll(-1,mode='relative') 就是在2的基礎上向上乙個單位變成1

cursor.scroll(0,mode='absolute')#位置的絕對移動

假如當前的位置是2,fetchone()一次後是3,在執行cursor.scroll(o,mode='absolute')

再次fetchone()下標就會變成1.

1.利用字串去進行sql的注入

sql='select * from userinfo where username='%s'' and password='%s'

sql=sql%('alex''or 1=1 --',1236)
這樣就完成了sql注入,注入完成後,where的條件就變成了

where username='alex' or 1=1 -- and password="%s"

因為sql語句中,'--'代表的是注釋的意思,那麼將後半段注釋後,"alex" or 1=1 這句話就永恆成立了

則可以利用這一漏洞進行登陸。

2.cursor=connection.cursor()

這句話游標被execute執行的時候,fetchall即是多元組((),(),)

而fetchone()是單元組,要是想元組變換成字典型別就需要

cursor=connection.cursor(cursor=pymsql.cursor.dictcursor)

3.select sname as f from student; 意思為將sname欄位的值作為f單獨一列呈現出來

4.獲取最新的自增id (對於auto_crement)

new_id =cursor.lastrowid

通過python簡單操作MySQL

pip install pymysql開始操作前需要匯入乙個包 import mysqldb用mysqldb中的connect 函式連線對應的資料庫 連線資料庫 conn mysqldb.connect host localhost mysql的ip port 3306,預設埠3306 user r...

Python簡單操作MySQL命令安裝

安裝平台 windows py3.x pymysql是python中操作mysql的模組 執行pip3 install pymysql命令安裝 mysql版本 mysql installer community 8.0.12.0 基本命令 建立資料庫 create database student ...

用Python對MySQL簡單操作

import pymysql 連線資料庫 conn pymysql.connect host localhost user root password helloguitar532123 charset utf8 獲得浮標 cursor conn.cursor 建立資料庫 sql create cr...