pymysql模塊

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

安裝

pip3 install pymysql

使用

import pymysql

# 構造上下文
config = {
    'host': '127.0.0.1',
    'port': 3306,
    'user': 'root',
    'password': 'mysql',
    'db': 'demo',
    'charset': 'utf8',
}

# 建立鏈接
conn = pymysql.connect(**config)

# 建立遊標
cursor = conn.cursor()

# ————————————————————操做例子1————————————————————————
# 執行SQL,並返回收影響行數
effect_row = cursor.execute("insert into class (class_name) values ('五班')")
print("受影響行數爲:%s" % effect_row)

# ————————————————————操做例子2————————————————————————
cursor.execute("select * from class")
# 獲取第一行數據
row_1 = cursor.fetchone()
print(row_1)  # (1, '一班')
# 獲取前n行數據
row_2 = cursor.fetchmany(3)
print(row_2)  # ((2, '二班'), (3, '三班'), (4, '四班')),能夠看到並非從第一個位置開始查找,而是從上次查找位置開始的
# 獲取全部數據
cursor.scroll(0, mode="absolute")  # 這個語句是用來給查詢進行絕對定位的,因爲其實位置是0,全部設置爲0,這樣下次查找又是從第一個開始查找。
row_3 = cursor.fetchall()
print(row_3)  # ((1, '一班'), (2, '二班'), (3, '三班'), (4, '四班'), (5, '五班'), (7, '五班'))

# ————————————————————操做例子3————————————————————————
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 關於默認獲取的數據是元祖類型,若是想要字典類型的數據,這樣設置便可
cursor.execute("select * from class")
row_4 = cursor.fetchall()
print(row_4)  # [{'id': 1, 'class_name': '一班'}, {'id': 2, 'class_name': '二班'}, {'id': 3, 'class_name': '三班'}, {'id': 4, 'class_name': '四班'}, {'id': 5, 'class_name': '五班'}, {'id': 7, 'class_name': '五班'}]

# 提交,否則沒法保存新建或者修改的數據
conn.commit()

# 關閉遊標
cursor.close()

# 關閉鏈接
conn.close()

能夠使用cursor.scroll(num,mode)來移動遊標位置,如:sql

  • cursor.scroll(1,mode='relative')  # 相對當前位置移動
  • cursor.scroll(2,mode='absolute') # 相對絕對位置移動

使用with簡化鏈接過程服務器

import pymysql
import contextlib
#定義上下文管理器,鏈接後自動關閉鏈接
@contextlib.contextmanager
def mysql(host='127.0.0.1', port=3306, user='root', passwd='', db='User',charset='utf8'):
  conn = pymysql.connect(host=host, port=port, user=user, passwd=passwd, db=db, charset=charset)
  cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
  try:
    yield cursor
  finally:
    conn.commit()
    cursor.close()
    conn.close()
 
# 執行sql
with mysql() as cursor:
  print(cursor)
  row_count = cursor.execute("select * from tb")
  row_1 = cursor.fetchone()
  print( row_count, row_1)
相關文章
相關標籤/搜索