MySQL基礎之 pymysql模組

2022-08-25 11:51:30 字數 4775 閱讀 6063

1、安裝模組

windows下cmd,輸入下列命令:

pip3 install pymysql

2、demo

1

import

pymysql

23 conn = pymysql.connect(host='

localhost

', user='

root

', password='', database='

test_db

', port=3306)

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

67 username = input('

>>>

').strip()

89 sql = '

select * from student where sname = "%s"

' %username

1011

print

(sql)

1213 affect_lines_no =cursor.execute(sql)

1415 result = cursor.fetchone() #

每執行一次,取一條記錄

1617

cursor.close()

18conn.close()

1920

#問題:sql注入,如:輸入 uu" or 1=1 -- "21#

資料庫中沒有uu該欄位,但是得到了結果!22#

檢視發出的sql語句就知道了:select * from student where sname = "uu" or 1=1 -- "

2324

ifresult:

25print('

成功得到結果!

', result)

26else:27

print('

沒有結果!

')

3.增刪查(cdu)時要記得提交!

import

pymysql

conn = pymysql.connect(host='

localhost

', user='

root

', password='', database='

test_db

', port=3306)

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

caption = input('

>>>

').strip()

sql = '

insert into class(caption) values(%s)

'cursor.execute(sql, [caption])

conn.commit()

#事務,無此句,不會有效果!

cursor.close()

conn.close()

3.executemany執行多個結果

ipt = input('

>>>

').strip()

ipt_lst = ipt.split(','

)print

(ipt_lst)

query = '

insert into class(caption) values (%s)

'cursor.executemany(query, ipt_lst)

#執行多個結果,只在插入時有用! ipt_lst --> ['四年級(2)班', '四年級(3)班']

conn.commit()

cursor.close()

conn.close()

4 fetchall與fetchmany的用法

import

pymysql

conn = pymysql.connect(host='

127.0.0.1

', user='

root

', password='', database='

test_db')

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

query = '

select * from class

'cursor.execute(query)

#results = cursor.fetchmany(3) # 取前三條結果

results =cursor.fetchall()

cursor.close()

conn.close()

if len(results) > 1:

for i in

results:

print(i)

5 游標 位置移動 scroll()方法

sql = '

select * from student

'cursor.execute(sql)

#cursor.scroll(1, mode='relative') # 相對位置移動1 fetchone()後,得到第二條記錄

cursor.scroll(2, mode='

absolute

') #

絕對位置移動2 fetchone()後,得到第三條記錄

result =cursor.fetchone()

print

(result)

result =cursor.fetchone()

print

(result)

result =cursor.fetchone()

print

(result)

print(cursor.fetchall()) #

得到剩餘全部資料

cursor.close()

conn.close()

6.游標的lastrowid屬性,得到自增id

#

insert_id = cursor.lastrowid + 2 沒執行前,是沒有該屬性的

sql = '

insert into class(caption) values("五年級(2)班")

'cursor.execute(sql)

print

(cursor.lastrowid)

conn.commit()

cursor.close()

conn.close()

7.綜合示例:許可權管理初步

資料表描述:

許可權表:(id,name)

1   訂單管理

2   使用者管理

3   選單管理

4   許可權分配

5   bug管理

使用者表:(id,name,pwd)

1   tom 123

2   john 456

使用者許可權關係表:(user_id, auth_id)

1    1

1    2

2    1

需求:用python實現

某個使用者登入後,檢視自己擁有所有許可權

import pymysql

conn = pymysql.connect(host='

localhost

', user='

python

', password='

py', database='

python_test_db')

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

count =0

while 1:

name = input('

請輸入使用者名稱:>>>

').strip()

pwd = input('

請輸入密 碼:>>>

').strip()

query = "

select * from user where name = %s and pwd = %s

"cursor.execute(query, (name, pwd))

result =cursor.fetchone()

ifresult:

print('

登入成功,您擁有的所有許可權是:')

sql = '

select a.name from auth a left join user_auth_relation ua on ua.auth_id = a.id where ua.user_id = %s

'lines = cursor.execute(sql, result['

uid'

]) results =cursor.fetchall()

for i, item in enumerate(results, 1):

print('

%d %s

' % (i, item['

name

']))

break

else

: count += 1

print('

請重新登入,您還剩%d次機會

' % (3 -count))

if count < 3:

continue

else

:

break

cursor.close()

conn.close()

基礎類封裝 pymysql庫操作mysql封裝

1 import pymysql 2from lib.logger import logger 3from warnings import filterwarnings 4 filterwarnings ignore category pymysql.warning 忽略mysql警告資訊56 cl...

使用PyMySQL連線MySQL

pymysql 是在 python3.x 中用於連線 mysql 的庫,而python2則是使用mysqldb。向資料表中插入資料import pymysql 選擇test資料庫,連線mysql db pymysql.connect host localhost port 3306 user roo...

引用pymysql模組連線mysql

1.要使用python的pymysql庫對mysql資料庫進行操作時,要先在ubuntu想安裝pymysql庫。安裝過程 安裝好pip3之後,用命令 pip install python3 pymysql 安裝pymysql庫,一直按y即可。2.安裝好pymysql之後,就可以在ubuntu進行資料...