Python pymysql模塊


什么是pymysql模塊

PyMySQL 是在 Python3.x 版本中用於連接 MySQL 服務器的一個庫,Python2中則使用mysqldb。

使用pymysql模塊

下載第三方模塊: pip3 install pymysql

import pymysql  

# 1.連接並打開Mysql數據庫
conn = pymysql.connect(
    host='127.0.0.1',  #主機地址,若是自己的主機也可以用'localhost'
    port=3306,  #端口
    user='root',  #用戶
    password='123456',  #密碼
    database='db4',  #數據庫
    charset='utf8',  # 設置編碼,此處不能寫utf-8
    autocommit=True  # 自動提交
)

# 2.創建游標,獲取游標對象 ----> 游標 可以用來提交sql命令
#pymysql.cursors.DictCursor 將查詢出來的結果制作成字典的形式返回
cursor_obj = conn.cursor(pymysql.cursors.DictCursor)

# 3.通過execute()方法可以執行sql語句
# 查數據
cursor_obj.execute('select * from t1')

# 查到數據后通過cursor_obj對象.fetchall() 獲取所以查詢到的結果
one = cursor_obj.fetchone()  #獲取結果的第一條數據  fetchone()
print(one)

for i in cursor_obj.fetchmany(3): #獲取剩余結果的前n條數據  #fetchmany()
    print(i)

all = cursor_obj.fetchall()   # 獲取剩余結果的所有數據
for j in all :
    print(j)

#相對移動
cursor_obj.scroll(2,
'relative') #基於指針所在的位置向后偏移2個
#絕對移動
cursor_obj.scroll(2,
'absolute') #基於起始位置向后偏移2個

# 一、創建表
#若表存在則刪除
cursor_obj.execute('drop table if exists user')

#創建表
sql = 'create table t1(id int,auto_increment,name varchar(20))'

# 5.使用 execute() 方法執行創建數據庫語句
cursor_obj.execute(sql)



# 二、SQL 插入語句
try:
	sql = 'insert into user(id, name) values(1, "baohan")'
	#執行 sql 語句
	cursor_obj.execute(sql)
	#提交到數據庫執行,不然無法保存新建或者修改的數據
	cursor_obj.commit()
except Exception as e:
	print(e)
	


# 三、更新數據
try:
    sql = 'update user set name="baohan_666" where id=1'
    cursor_obj.execute(sql)

except:
   # 如果發生錯誤則回滾
	conn.rollback()

#對數據進行查找
print(cursor_obj.execute('select * from user'))
print(cursor_obj.fetchall())



# 四、刪除數據
sql = 'delete from user'
cursor_obj.execute(sql)

# 提交,不然無法保存新建或者修改的數據
conn.commit()
# 關閉游標
cursor_obj.close()
# 關閉連接
conn.close()

SQL的注入問題

sql注入問題:利用特殊符號和注釋語法 巧妙地繞過真正的sql校驗

關鍵性的數據 不要自己手動去拼接 而是交由execute幫你去做拼接

import pymysql

conn = pymysql.connect(
    host = 'localhost',
    user = 'root',
    passwd = '123',
    charset = 'utf8',
    db = 'day36',
    autocommit = True
)

cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
#獲取用戶輸入的用戶名和密碼 然后去數據庫中校驗
username = input('username>>>:').strip()
password = input('password>>>:').strip()

# sql = "select * from user_info where name='%s' and password= '%s'"%(username,password)  #錯誤寫法,會產生SQL注入問題
sql = "select * from user_info where username=%s and password=%s"

cursor.execute(sql,(username,password))
res = cursor.fetchall()
if res:
    print(res)
else:
    print('用戶名或密碼錯誤')


免責聲明!

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



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