pymysql模塊

=============python操做MySQL============ 1、連接,執行sql,關閉(遊標) import pymysql # 導入模塊
user= input('用戶名:>>').strip() pwd= input('密碼:>>').strip() #先連接,拿到遊標
conn=pymysql.connect(host='localhost',user='root',password='密碼', database='數據庫名',charset='utf8') cursor=conn.cursor() #拿到遊標,即mysql > #執行sql
sql='select * from userinfo where user="%s" and password="%s";'%(user,pwd) print(sql) #注意%s須要加雙引號
rows = cursor.execute(sql)  #拿到受影響的行數
 cursor.close() conn.close() if rows: print('登陸成功') else: print('登陸失敗') 2、execute()之sql注入 - 注意:符號--會註釋掉它以後的sql,正確的語法是:--後面至少有一個任意字符 根本原理:就是根據程序的字符串拼接name='%s',當輸入一個xxx'--nnn,咱們輸入的xxx加'在程序中拼接成一個 判斷條件name='xxx'--nnn'  \ -sql注入的兩種狀況 1.sql注入之:用戶存在,繞過密碼 name' -- 任意字符
        2.sql注入之:用戶不存在,繞過用戶與密碼 xxx' or 1=1 --任意字符
 解釋注入: # 原來是咱們對sql進行字符串拼接
        # sql="select * from userinfo where name='%s' and password='%s'" %(user,pwd)
        # print(sql)
        # rows=cursor.execute(sql)

        #改寫爲(execute幫咱們作字符串拼接,咱們無需且必定不能再爲%s加引號了)
        sql="select * from userinfo where name=%s
         and password=%s" #!!!注意%s須要去掉引號,由於pymysql會自動爲咱們加上
        rows=cursor.execute(sql,[user,pwd]) #pymysql模塊自動幫咱們解決sql注入的問題,只要咱們按照pymysql的規矩來。

        -- execute源碼解釋 def execute(self, query, args=None): """Execute a query :param str query: Query to execute. :param args: parameters used with query. (optional) :type args: tuple, list or dict :return: Number of affected rows :rtype: int If args is a list or tuple, %s can be used as a placeholder in the query. If args is a dict, %(name)s can be used as a placeholder in the query. """ 3、增、刪、改、查:conn.commit() =======import pymysql 先連接,拿到遊標 conn=pymysql.connect(host='localhost',user='root',password='密碼',database='數據庫名') cursor=conn.cursor() #拿到遊標,即mysql > #執行sql 增:
sql='insert into user1(user,password) VALUES (%s,%s)'
print(sql) # rows = cursor.execute(sql,('xixi',123)) #插入一條記錄 #參數:數組。字典。元組
rows = cursor.executemany(sql,[('xixi',123),('aaa',456),('ttt',147)]) #插入多行記錄
print('%s row in set (0.00 sec)'%rows) conn.commit() #提交到數據庫
cursor.close() conn.close() =======import pymysql #先連接,拿到遊標
name=input('>>').strip() conn=pymysql.connect(host='localhost',user='root',password='密碼',database='數據庫名') cursor=conn.cursor() #拿到遊標,即mysql > #執行sql 刪:
sql='delete from user1 where user =%s;'  #刪除數據
print(sql) rows = cursor.execute(sql,(name)) print('%s row in set (0.00 sec)'%rows) conn.commit() #提交到數據庫
cursor.close() conn.close() =======import pymysql #先連接,拿到遊標
id=input('>>').strip() conn=pymysql.connect(host='localhost',user='root',password='密碼',database='數據庫名') cursor=conn.cursor() #拿到遊標,即mysql > #執行sql 改:
sql=' update user1 set password = "5555555" where id=%s;'
print(sql) rows = cursor.execute(sql,(id)) print('%s row in set (0.00 sec)'%rows) conn.commit() #提交到數據庫
cursor.close() conn.close() ========查(fetchont,fetchmany.fetchall) ---------查fetchone,fetchmany,fetchall-----------
import pymysql conn=pymysql.connect(host='localhost',user='root',password='密碼',database='數據庫名') cursor=conn.cursor() #拿到遊標,即mysql > #執行sql 查:
sql='select * from user1;' rows = cursor.execute(sql) #查單條fetchone
res1=cursor.fetchone() res2=cursor.fetchone() res3=cursor.fetchone() print(res1) print(res2) print(res3) print(res3[0]) #查多條fetchmany
print(cursor.fetchmany(3)) print(cursor.fetchone()) #查全部fetchall
print(cursor.fetchall()) print(cursor.fetchone()) #-------光標的移動-------- #1.絕對路徑:從文件的開頭位置算起
print(cursor.fetchall()) cursor.scroll(1,mode='absolute') print(cursor.fetchone()) cursor.scroll(3,mode='absolute') print(cursor.fetchone()) #2.相對路徑:
print(cursor.fetchone()) print(cursor.fetchone()) cursor.scroll(2,mode='relative') #相對於上面的兩條向後移兩條
print(cursor.fetchone()) print('%s row in set (0.00 sec)' %rows) cursor.close() conn.close() 4、獲取插入後的最後一條數據的自增ID ------查看錶中最後一行的iD import pymysql conn=pymysql.connect(host='localhost',user='root',password='喵喵6',database='數據庫名',charset='utf8') cursor=conn.cursor() sql='insert into user1(user,password) values(%s,%s);' rows=cursor.execute(sql,('name','123')) # rows=cursor.executemany(sql,[('aaa','123'),('bbb','123'),('ccc','12323')])
conn.commit() print(cursor.lastrowid)  #查看錶中最後一行的iD
 cursor.close() conn.close()
相關文章
相關標籤/搜索