PyMySQL基本使用以及SQL注入問題

2022-07-24 09:06:11 字數 4044 閱讀 4470

目錄又是乙個可以幫助我們實現用**來運算元據庫的模組,安裝,匯入即可

然後匯入即可使用

# pymysql基本使用

import pymysql

conn = pymysql.connect(

user='root',

password='123',

host='127.0.0.1',

port=3306,

charset='utf8',

database='db3'

)cursor = conn.cursor(cursor=pymysql.cursors.dictcursor) # 產生乙個游標物件

# 括號中cursor=pymysql.cursors.dictcursor 是將查詢出來的結果製作成字典的形式返回

sql = "select * from user_info" # 在pycharm中,加不加分號無所謂,pymysql會自動給你加

res = cursor.execute(sql) # 執行sql語句

# print(res) # ---> 3 execute返回的時候當前sql所影響的行數

# ret = cursor.fetchone() # 只獲取查詢結果中的一條資料

# ret = cursor.fetchall() # 獲取查詢結果的所有資料

# ret = cursor.fetchmany(2) # 指定獲取幾條資料,如果數字超過了也不會報錯

# print(ret)

# print(cursor.fetchone())

# print(cursor.fetchone())

# 相對移動

cursor.scroll(2,'relative') # 基於指標所在位置,往後偏移

# 絕對移動

cursor.scroll(1, 'absolute') # 基於起始位置,往後偏移

解決方法

import pymysql

conn = pymysql.connect(

user='root',

passwd='123',

db='db3',

host='127.0.0.1',

port=3306,

charset='utf8'

)cursor = conn.cursor(cursor=pymysql.cursors.dictcursor)

# 獲取使用者輸入的使用者名稱和密碼,然後去資料庫中校驗

username = input('username>>>:').strip()

password = input('password>>>:').strip()

# sql = "select * from user_info where username='%s' and password='%s'" % (username,password) # 注意:不要自己拼接

sql = "select * from user_info where username=%s and password=%s"

print(sql)

cursor.execute(sql, (username, password))

res = cursor.fetchall()

if res:

print(res)

else:

print('username or password error')

先來個例子再說

import pymysql

conn = pymysql.connect(

user = 'root',

passwd = '123',

db = 'db3',

host = '127.0.0.1',

port = 3306,

charset = 'utf8'

)cursor = conn.cursor(cursor=pymysql.cursors.dictcursor)

# 增sql = "insert into user_info(username,password) values('jason_dsb',111)"

# 改# sql = "update user_info set username='jason_dsb' where id = 2"

# 刪除

# sql = "delete from user_info where id=1"

res = cursor.execute(sql)

print(res) # 結果---> 1

可以發現,每個語句執行結果都是1,證明語句的執行都影響了一條資料,但是發現,資料庫資料不變

why?

because:針對增 刪 改 操作,都是對資料庫的資料進行了實際操作,執行的重要程度較高,所以,必須要有一步確認操作(commit)

import pymysql

conn = pymysql.connect(

user = 'root',

passwd = '123',

db = 'db3',

host = '127.0.0.1',

port = 3306,

charset = 'utf8'

)cursor = conn.cursor(cursor=pymysql.cursors.dictcursor)

# 增sql = "insert into user_info(username,password) values('tank_dsb',111)"

# 改# sql = "update user_info set username='jason_dsb' where id = 2"

# 刪除

# sql = "delete from user_info where id=1"

res = cursor.execute(sql)

conn.commit() # 確認當前操作,真正同步到資料庫

print(res) # 結果---> 1

autocommit = true #自動提交確認

)cursor = conn.cursor(cursor=pymysql.cursors.dictcursor)

# 增# sql = "insert into user_info(username,password) values('tank_dsb',111)"

# 改# sql = "update user_info set username='jason_dsb' where id = 2"

# 刪除

sql = "delete from user_info where id=9"

res = cursor.execute(sql)

# conn.commit() # 確認當前操作,真正同步到資料庫

print(res) # 結果---> 1

SQ中的decimal 函式的使用以及個人理解

在網上搜了好幾個關於decimal 的部落格,不是特別理解,結合前人的部落格以及個人的理解,寫下這個部落格,便於自己記憶加深理解。decimal一般用於對精度要求高的,比如與金錢相關的,用整型和浮點型都不行了,才會用到decimal,或者用於sql查詢中也可以 decimal a,b a 指的是整數...

NSSortDescriptor使用以及陣列排序

nssortdescriptor 指定用於物件陣列排序的物件的屬性。物件可能是字典,這種情況就是對字典陣列排序 如果是employee物件需要按照name來排序,就生成下面的descriptor nssortdescriptor descriptor nssortdescriptor sortdes...

CString基本使用以及 和Char 之間的轉化

cstring 的簡單使用 1.cstring 物件的連線 cstring 物件的連線是通過該類的 成員操作符進行的。成員操作符也稱為連線操作符,可以把兩個字串連線起來,並返回乙個 cstring 的物件。但需要注意的是 兩個引數字串至少有乙個是 cstring 物件,另外乙個可以是字元或者字元指標...