1、安裝模組
windows下cmd,輸入下列命令:
pip3 install pymysql
2、demo
1import
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
(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)時要記得提交!
importpymysql
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(','
(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的用法
importpymysql
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()
(result)
result =cursor.fetchone()
(result)
result =cursor.fetchone()
(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)
(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 pymysqlconn = 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進行資料...