python 鏈接 mysql數據庫


#需要導入pymysql模塊

import pymysql

conn = pymysql.connect(
host = '127.0.0.1',
port = 3306,
user = 'root',
password = '*****',
charset = 'utf8', #編碼也一定要添加
database = 'user_db' #一定要添加要使用的數據庫
)
cursor = conn.cursor(cursor = pymysql.cursors.DictCursor)
#設值獲取的內容為字典模式,默認是元組


sql = 'select * from user_db' #你要執行的sql語句
cursor.execute(sql)

print(cursor.fetchone()) #獲取一條
print(cursor.fetchmany(5)) #參數說明 要獲取多少
print(cursor.fetchall()) #獲取所有
# 注意: 獲取的時候,有類似讀文件的光標,
    可以用 cursor.scroll(1,'relative')
          cursor.scroll(1,'absolute') 來控制

# absolute 是以開頭為參考,relative 是以當前為參考


***************sql注入的問題*******************
通過特殊符號,達到欺騙,
select * from user_db where name = 'lqw' -- dadadada
#知道用戶名,需要密碼的部分被注釋掉了,直接登錄成功
select * from uer_db where name = 'add ' or 1 = 1 -- dada
#不知道用戶名,通過or 只要成立一個 1=1恆成立,也可以進入
,解決辦法,不要讓關鍵,敏感的自己拼接,
import pymysql

conn = pymysql.connect(.......
) 注意:要添加用的數據庫

cursor = conn.cursor()
sql = 'select *from where name = "%s" and password = "%s"'
cuusor.ececute(sql,(name,password))

******************pymysql的增刪改查******************
import pymysql

conn = pymysql.connect(
host = '127.0.0.1',
port = 3306,
user = 'root',
password = '991018',
db = 'user_db',
charset = 'utf8',
autocommit = True #自動提交 保存
)
cursor = conn.cursor(pymysql.cursors.DictCursor) #結果是以字典的
                               形式保存的

#查
# sql = 'select password from user_db where username ="lqw" ;'
# res = cursor.execute(sql)
# print(res)
# print(type(cursor.fetchone().get("password")))

# 刪
# sql = 'delete from user_db where username ="alex"'
#
# res = cursor.execute(sql)
# print(res)
# sql1 = 'select *from user_db'
# cursor.execute(sql1)
# print(cursor.fetchall())
#改

# sql12 = 'update user_db set password = "123456" where
                        username = "lqw"'

# res = cursor.execute(sql12)
# print(res)
# print(cursor.fetchone())
# sql1 = 'select *from user_db'
# cursor.execute(sql1)
# print(cursor.fetchall())
#增
# sql = 'select password from user_db where username ="lqw" ;
sql = 'insert user_db(username,password) values(%s,%s)'
cursor.executemany(sql,[("tank","123"),("hanhan","123")])
# sql1 = 'select *from user_db'
# cursor.execute(sql1)
print(cursor.fetchall())
 

 

 
        

   #        提提神

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM