PyMySQL的基本操作


什么是 PyMySQL?

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

PyMySQL 遵循 Python 數據庫 API v2.0 規范,並包含了 pure-Python MySQL 客戶端庫。

PyMySQL的安裝

pip3 install pymysql
#pymysql模塊,同屬於套接字模塊。

PyMySQL的基本使用

使用PyMySQL模塊固定不變的執行順序

  1. 建立連接
  2. 拿到游標
  3. 執行SQL語句
  4. 關閉(游標、連接)

小例子:

import pymysql

username = input('>>>:').strip()
pwd = input('>->>:').strip()

#建立連接
db = pymysql.connect(
     host='192.168.9.99',
     port=3306,
     user='root',
     password='123',
     db = 'dbname',
     charset='utf8',
     )

#拿到游標
cursor = db.cursor()

#執行SQL語句
# sql = 'select * from userinfo where username = "%s" and pwd = "%s"'
sql = 'insert into userinfo(username,pwd) values (%s,%s)'

try:
   #rows變量得到數據庫中被影響的數據行數。
   rows = cursor.execute(sql, (username, pwd))

   # 向數據庫提交
   db.commit()
   #如果沒有commit(),庫中字段已經向下移位但內容沒有寫進,可是自動生成的ID會自動增加。
except:
   # 發生錯誤時回滾
   db.rollback()

#關閉(游標、數據庫)
cursor.close()
db.close()

if rows: #通過ROWS的返回值來判斷執行結果。
    print('連接成功')
else:
    print('登錄失敗')

插入多條數據:executemany()

使用executemany()來多條插入信息。要用列表包含元組的形式插入。[(),(),()]

例如:rows = cursor.executemany(sql,[('sly','123),('hh','123')])
#這個例子中的rows可以不加。它的作用是記錄影響的行數。

查詢

取返回數據用 fetch(一共三種)

  1. fetchone() 一次一條數據。
  2. fetchmany() 一次多條數據,括號內填入要讀取的數據條數。不填則為1條數據,如果讀數超過實際條數,只顯示實際條數。
  3. fetchall() 一次讀取全部數據,如果管道內沒有數據,則返回空元組或空列表。

    例如:printcursor.fetchone()) 在管道中取一條數據。
    注意:用fetchone()取值超過最大數會返回None

將取回值以字典形式顯示:pymysql.cursors.DictCursor

需在拿游標時加載

例如:cursor = db.cursor(pymysql.cursors.DictCursor)

移動指針

注意:當一次查詢結束后,再次查詢時為空,是因為指針到了最后位,如果想再次查找就需要將指針指向指定的位置。另外,指針的位置與列表一樣,首位為0。(第0位為第一條數據)

指針的移動有兩種:

1,相對絕對位置移動:absolute

#指的是由第一條記錄開始的第N個位置
#例如:
scroll(2,mode='absolute') #指針指向數據的第2位這條記錄。數據的第一條記錄為第0位。

2,相對當前位置移動: relative

#指的是由當前的記錄位置開始的第N個位置
#例如:
scroll(3,mode='relative') #指針指向當前數據位置的后數3位的記錄。

3,查詢當前數據庫中指針位置:lastrowid

#上次光標位置
print(cursor.lastrowid)

小練習:

import pymysql

conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='sly',
    password='123',
    db='pytest'
)

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

sql = 'select * from userinfo'
# sql = 'select * from userinfo where user=%s and pwd=%s' #查詢
# sql = 'select * from userinfo where user="%s" and pwd="%s"' % (user, pwd) #該方法不安全,要使用PYMYSQL模表導入。
# sql = 'insert into userinfo (user,pwd) value (%s,%s)'  #增加
# sql = 'update userinfo set user=%s where user=%s'  #更改
# sql = 'delete from userinfo where user=%s and pwd=%s' #刪除

# print(sql)
# rows = cursor.execute(sql, (user, pwd))
# rows = cursor.executemany(sql, [('sly1', '123'), ('sly2', '123'), ('sly3', '123')])
rows = cursor.execute(sql)
print(cursor.lastrowid)

cursor.scroll(1, mode='absolute')
print(cursor.fetchone())
# cursor.scroll(2, mode='relative')
print('this is fetch one...')
print(cursor.fetchmany(2))
print('this is fetch many....')
print(cursor.fetchall())
print('this is fetch all...')
print(rows)

conn.commit()

cursor.close()
conn.close()


免責聲明!

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



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