第二百七十九节,MySQL数据库-pymysql模块操作数据库
MySQL數據庫-pymysql模塊操作數據庫
pymysql模塊是python操作數據庫的一個模塊
?
connect()創(chuàng)建數據庫鏈接,參數是連接數據庫需要的連接參數
使用方式:
模塊名稱.connect()
參數:
host=數據庫ip
port=數據庫端口
user=數據庫用戶名
passwd=數據庫密碼
db=數據庫名稱
charset=數據庫編碼
cursor()創(chuàng)建數據庫操作游標,無參
使用方式:
游標變量.cursor()
execute()操作數據庫,參數1 sql語句,參數2 字符串占位符變量
使用方式:
游標變量.execute()
execute()操作數據庫會返回,操作數據庫后影響的行數,我們可以以此判斷是否操作成功
commit()提交數據到數據庫,無參
使用方式:
創(chuàng)建數據庫鏈接變量.commit()
close()關閉游標
使用方式:
游標變量.close()
close()關閉數據庫
使用方式:
創(chuàng)建數據庫變量.close()
向數據庫添加一條數據
?
#!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql# 創(chuàng)建連接 """ host=數據庫ip port=數據庫端口 user=數據庫用戶名 passwd=數據庫密碼 db=數據庫名稱 """ conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi') # 創(chuàng)建游標 cursor = conn.cursor()# 執(zhí)行SQL,并返回收影響行數 effect_row = cursor.execute("INSERT INTO db1(yhm,mim) VALUES('adc8868','279819')") #添加一條數據 print(effect_row) #返回影響行數# 提交,不然無法保存新建或者修改的數據 conn.commit()# 關閉游標 cursor.close() # 關閉連接 conn.close()?
?
execute(sql語句%s,(占位符變量))執(zhí)行sql語句時的占位符使用
execute()操作一條數據
#!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql# 創(chuàng)建連接 """ host=數據庫ip port=數據庫端口 user=數據庫用戶名 passwd=數據庫密碼 db=數據庫名稱 """ conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi') # 創(chuàng)建游標 cursor = conn.cursor()# 執(zhí)行SQL,并返回收影響行數 effect_row = cursor.execute("INSERT INTO db1(yhm,mim) VALUES(%s,%s)",('adc279819',279819)) #添加一條數據 print(effect_row) #返回影響行數# 提交,不然無法保存新建或者修改的數據 conn.commit()# 關閉游標 cursor.close() # 關閉連接 conn.close()?
?
executemany(sql語句,[(占位符變量),(占位符變量)])執(zhí)行sql語句時的占位符使用
executemany()操作多條數據
#!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql# 創(chuàng)建連接 """ host=數據庫ip port=數據庫端口 user=數據庫用戶名 passwd=數據庫密碼 db=數據庫名稱 """ conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi') # 創(chuàng)建游標 cursor = conn.cursor()# 執(zhí)行SQL,并返回收影響行數 effect_row = cursor.executemany("INSERT INTO db1(yhm,mim) VALUES(%s,%s)",[('a1',123),('a2',456),('a3',789)]) print(effect_row) #返回影響行數# 提交,不然無法保存新建或者修改的數據 conn.commit()# 關閉游標 cursor.close() # 關閉連接 conn.close()?
?
查詢數據庫數據
注意:操作數據庫的增、刪、改都需要commit()提交數據到數據庫,而查詢是不需要commit()的
fetchall()獲取游標查詢數據庫里的數據,返回元祖
使用方式:
游標變量.fetchall()
?
#!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql# 創(chuàng)建連接 """ host=數據庫ip port=數據庫端口 user=數據庫用戶名 passwd=數據庫密碼 db=數據庫名稱 charset=數據庫編碼 """ conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi',charset='utf8') # 創(chuàng)建游標 cursor = conn.cursor()# 執(zhí)行SQL,并返回收影響行數 effect_row = cursor.execute("SELECT id,yhm,mim FROM db1") shuju = cursor.fetchall() #獲取游標里的數據 print(shuju) # 提交,不然無法保存新建或者修改的數據 # conn.commit()# 關閉游標 cursor.close() # 關閉連接 conn.close()?
?
?
?
查詢數據庫內容時更改游標返回字典類型數據【推薦】
返回字典類型將數據庫表的列(字段)作為鍵返回
默認查詢數據時游標返回的元祖類型,如果想返回字典類型就需要設置游標
cursor=pymysql.cursors.DictCursor設置游標返回字典類型數據,當做參數寫在execute()里,execute(cursor=pymysql.cursors.DictCursor)
#!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql# 創(chuàng)建連接 """ host=數據庫ip port=數據庫端口 user=數據庫用戶名 passwd=數據庫密碼 db=數據庫名稱 charset=數據庫編碼 """ conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi',charset='utf8') # 創(chuàng)建游標 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 執(zhí)行SQL,并返回收影響行數 effect_row = cursor.execute("SELECT id,yhm,mim FROM db1") shuju = cursor.fetchall() #獲取游標里的數據 print(shuju)# 提交,不然無法保存新建或者修改的數據 # conn.commit()# 關閉游標 cursor.close() # 關閉連接 conn.close()?
?
fetchone()獲取游標里第一條數據,如果多次執(zhí)行fetchone()就依次獲取數據
使用方式:
游標變量.fetchone()
?
?
fetchmany()獲取游標里,指定條數據,參數是要獲取數據的條數
使用方式:
游標變量.fetchmany(3)
?
?
移動游標里數據指針獲取對應數據
scroll(1,mode='relative')相對當前位置移動
使用方式:
游標變量.scroll(1,mode='relative')
第一個參數正數相對當前位置向下移動數值對應指針,第一個負數相對當前位置向上移動數值對應指針
scroll(2,mode='absolute')相對絕對位置移動
使用方式:
游標變量.scroll(2,mode='absolute')
將指針位置移動到第一個參數數值對應指針
相對當前位置移動獲取數據mode='relative'
#!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql# 創(chuàng)建連接 """ host=數據庫ip port=數據庫端口 user=數據庫用戶名 passwd=數據庫密碼 db=數據庫名稱 charset=數據庫編碼 """ conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi',charset='utf8') # 創(chuàng)建游標 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 執(zhí)行SQL,并返回收影響行數 effect_row = cursor.execute("SELECT id,yhm,mim FROM db1") shuju = cursor.fetchone() #獲取游標里第一條數據,指針在第一個位置 shuju = cursor.fetchone() #指針在第二個位置 shuju = cursor.fetchone() #指針在第三個位置 print(shuju) #打印應該是第三條 cursor.scroll(-2,mode='relative') #調整指針,相對當前位置向上移動2位 shuju = cursor.fetchone() #指針第二位 print(shuju) # 提交,不然無法保存新建或者修改的數據 # conn.commit()# 關閉游標 cursor.close() # 關閉連接 conn.close()?
相對絕對位置移動mode='absolute'
#!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql# 創(chuàng)建連接 """ host=數據庫ip port=數據庫端口 user=數據庫用戶名 passwd=數據庫密碼 db=數據庫名稱 charset=數據庫編碼 """ conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi',charset='utf8') # 創(chuàng)建游標 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 執(zhí)行SQL,并返回收影響行數 effect_row = cursor.execute("SELECT id,yhm,mim FROM db1") shuju = cursor.fetchone() #獲取游標里第一條數據,指針在第一個位置 shuju = cursor.fetchone() #指針在第二個位置 shuju = cursor.fetchone() #指針在第三個位置 print(shuju) #打印應該是第三條 cursor.scroll(3,mode='absolute') #調整指針,相對絕對位置移動3位 shuju = cursor.fetchone() #指針第四位 print(shuju) # 提交,不然無法保存新建或者修改的數據 # conn.commit()# 關閉游標 cursor.close() # 關閉連接 conn.close()?
?
添加數據庫時獲取到添加數據的自增id
lastrowid獲取添加數據時的自增id
使用方式:
游標變量.lastrowid
注意:如果是添加的多條數據,獲取到的自增id是最后一條的自增id
?
轉載于:https://www.cnblogs.com/adc8868/p/6942542.html
總結
以上是生活随笔為你收集整理的第二百七十九节,MySQL数据库-pymysql模块操作数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: maven+SSM框架工程搭建
- 下一篇: 程序猿的日常——JVM内存模型与垃圾回收