pymysql

1、簡單操做以及格式mysql

 1 import pymysql
 2 # 配置
 3 client=pymysql.connect(
 4     host='127.0.0.1',
 5     port=3306,
 6     user='root',
 7     password='0',
 8     database='db1',
 9     charset='utf8' # 中間沒有-
10 )
11 # 遊標
12 cursor=client.cursor()
13 # 拼接sql語句
14 sql='insert into t(name) values("baobao")'
15 try:
16     # 執行sql語句
17     res=cursor.execute(sql)
18     print(res)
19     client.commit()
20 except Exception:
21     # 捕捉到異常狀況就回退至操做以前的數據
22     client.rollback()
23 # 退出遊標
24 cursor.close()
25 # 回收系統資源
26 client.close()

2.簡單從MySQL登陸sql

import pymysql
while True:
    user=input('用戶名:').strip()
    pwd=input('密碼:').strip()
    client=pymysql.connect(
        host='127.0.0.1',
        user='root',
        password='0',
        database='db1',
        charset='utf8'
    )
    cursor=client.cursor()
    print(cursor)
    sql="select * from t where name='%s' and password='%s'"%(user,pwd)
    print(sql)
    # 返回行數
    rows=cursor.execute(sql)
    cursor.close()
    client.close()
    if rows:
        print('登陸成功')
        break
    else:
        print('登陸失敗')

登陸結果:ide

注意:在MySQL中 -- 是取消後面語句的意思fetch

  不用輸密碼就能夠登入:此時拼接的字符串是有問題的,若客戶端輸入的是 renren" -- asdf 直接回車則會直接登陸成功,緣由是 --取消掉了後面任何語句的含義。es5

  帳號密碼都不用輸就登陸:輸入 renren" or 1<2 --asdf,其後邊的1<2條件一直成立,這種狀況下說明帳戶是正確的, -- 又取消了後邊的全部輸入語句,因此此時是不用帳號密碼能夠直接登陸了。spa

import pymysql
while True:
    user=input('用戶名:').strip()
    pwd=input('密碼:').strip()
    client=pymysql.connect(
        host='127.0.0.1',
        user='root',
        password='0',
        database='db1',
        charset='utf8'
    )
    cursor=client.cursor()
    print(cursor)
    sql="select * from t where name=%s and password=%s" # 後邊不用傳入參數了
    print(sql)
    # 返回的是在MySQL中看到的行數
    rows=cursor.execute(sql,(user,pwd)) # execute具備自動傳參的功能
    print(rows)
    cursor.close()
    client.close()
    if rows:
        print('登陸成功')
        break
    else:
        print('登陸失敗')
解決 -- 破解的方式

3.在pyMysql中對MySQL庫中的表進行增、刪、改code

 1 import pymysql
 2 client=pymysql.connect(
 3     host='127.0.0.1',
 4     user='root',
 5     password='0',
 6     database='db1',
 7     charset='utf8'
 8 )
 9 #
10 cursor=client.cursor()
11 # sql="insert into t(name,password) values(%s,%s)"
12 # rows=cursor.execute(sql,(('tianqian',123)))
13 
14 #
15 # sql="delete from t where name=%s"
16 # rows=cursor.execute(sql,[('tianqian')])
17 #
18 # # 改s
19 sql="alter table t change name NAME varchar(15)"
20 rows=cursor.execute(sql,)
21 print(rows)
22 
23 # 表示客戶端這邊必須提交修改的數據,不然Mysql當中的數據並不會更新
24 client.commit()
25 
26 cursor.close()
27 client.close()

4.查數據blog

 1 import pymysql
 2 client=pymysql.connect(
 3     host='127.0.0.1',
 4     user='root',
 5     password='0',
 6     database='db1',
 7     charset='utf8'
 8 )
 9 cursor=client.cursor()
10 sql="select * from t"
11 rows=cursor.execute(sql)
12 # res1=cursor.fetchone() # 一條,取完以後返回None
13 # res2=cursor.fetchone() # 一條
14 # res3=cursor.fetchone() # 一條
15 # res4=cursor.fetchone() # 一條
16 # res5=cursor.fetchone() # 一條
17 # res2=cursor.fetchmany(2) # 指定參數多少就是取幾條,返回的是元組的形式
18 # res3=cursor.fetchall() # 取出全部,返回的是元組的形式
19 # print(res1)
20 # print(res2)
21 # print(res3)
22 # print(res4)
23 # print(res5)
24 # print(res2)
25 # print(res3)
26 client.commit()
27 
28 cursor.close()
29 client.close()

5. 獲取插入數據的最後一條自增IDip

import pymysql
client=pymysql.connect(
    host='127.0.0.1',
    user='root',
    password='0',
    database='db1',
    charset='utf8'
)
cursor=client.cursor()
sql="insert into t(NAME,password) values(%s,%s)"
rows=cursor.execute(sql,(('douqi',123)))
# 獲取插入最後一條數據的自增ID
print(cursor.lastrowid)  #13

client.commit()

cursor.close()
client.close()
自增ID的獲取
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息