1. 程式人生 > >mysql資料庫(三)——pymysql模組

mysql資料庫(三)——pymysql模組

pymysql模組:本質就是一個套接字客戶端軟體,使用前需要事先安裝 

pip install pymysql

 1.基本使用

import pymysql
user_name = input('name:').strip()
user_psw = input('psw:').strip()

# 1.建連結
conn = pymysql.connect(
    host='0.0.0.0',
    port=3306,
    user='root',
    password='xxx',
    database='db1',
    charset='
utf8' ) # 2.遊標 cursor = conn.cursor() # 執行完畢,返回的結果集預設以元祖顯示 # 3.執行sql語句 sql = "select * from usr where name='%s' and psw='%s'"%(user_name,user_psw) print(sql) res = cursor.execute(sql) cursor.close() conn.close()

2.execute()之SQL注入

注意:符號--會註釋掉它之後的sql,正確的語法:--後至少有一個任意字元

根本原理:就根據程式的字串拼接name='%s',我們輸入一個xxx' -- haha

,用我們輸入的xxx加'在程式中拼接成一個判斷條件name='xxx' -- haha'

import pymysql
user_name = input('name:').strip()
user_psw = input('psw:').strip()

# 1.建連結
conn = pymysql.connect(
    host='0.0.0.0',
    port=3306,
    user='root',
    password='xxx',
    database='db1',
    charset='utf8'
    )
# 2.遊標
cursor = conn.cursor() #
執行完畢,返回的結果集預設以元祖顯示 # 3.執行sql語句 sql = "select * from usr where name=%s and psw=%s" res = cursor.execute(sql,(user_name,user_psw)) # execute幫我們做字串拼接,我們無需且一定不能再為%s加引號了 cursor.close() conn.close() if res: print('登陸成功!') else: print('登入失敗!')

3.增加資料

import pymysql
conn = pymysql.connect(
    host='0.0.0.0',
    port=3306,
    user='root',
    password='xxx',
    database='db1'
)

cursor = conn.cursor()
# sql = "insert into usr(name,psw) values('kong','hui123');"
# res = cursor.execute(sql)

sql = "insert into usr(name,psw) values(%s,%s);"
res = cursor.execute(sql,('張三','hui123'))
# 增加單個數據

# res = cursor.executemany(sql,[('李四','hui123'),('王五','hui123')])
# 新增多條記錄

# print(res) # 返回影響行數

conn.commit() # 必須有提交操作

cursor.close()
conn.close()

4.查詢資料

import pymysql
conn = pymysql.connect(
    host='0.0.0.0',
    port=3306,
    user='root',
    password='xxx',
    database='db1'
)
cursor = conn.cursor() # 返回結果以元祖顯示
# cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 返回結果以字典顯示

sql = 'select * from usr;'
rows = cursor.execute(sql)

# 一個個的取查詢結果
# res1 = cursor.fetchone()
# res2 = cursor.fetchone()
# res3 = cursor.fetchone()
# print(res1, res2, res3, sep='\n')

# 一次取多個結果
# res = cursor.fetchmany(3)
# for i in res:
#     print(i)

# 取全部
res = cursor.fetchall()
for i in res:
    print(i)

# cursor.scroll(2,mode='absolute') # 相對初始位置移動
# cursor.scroll(2,mode='relative') # 相對當前位置移動

cursor.close()
conn.close()