最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用pymysql實(shí)現(xiàn)操作mysql

 更新時(shí)間:2016年09月13日 10:08:27   作者:W-Kr  
本文給大家講解的是在python中使用pymysql實(shí)現(xiàn)操作mysql的方法匯總,非常的簡單實(shí)用,有需要的小伙伴可以參考下

pymsql是Python中操作MySQL的模塊,其使用方法和MySQLdb幾乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。

適用環(huán)境

python版本 >=2.6或3.3

mysql版本>=4.1

安裝

可以使用pip安裝也可以手動(dòng)下載安裝。

使用pip安裝,在命令行執(zhí)行如下命令:

pip install PyMySQL

手動(dòng)安裝,請先下載。下載地址:https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X。

其中的X.X是版本(目前可以獲取的最新版本是0.6.6)。

下載后解壓壓縮包。在命令行中進(jìn)入解壓后的目錄,執(zhí)行如下的指令:

python setup.py install

建議使用pip安裝。

使用示例

連接數(shù)據(jù)庫如下:

import pymysql.cursors
 
# Connect to the database
connection = pymysql.connect(host='127.0.0.1',
               port=3306,
               user='root',
               password='zhyea.com',
               db='employees',
               charset='utf8mb4',
               cursorclass=pymysql.cursors.DictCursor)
 

也可以使用字典進(jìn)行連接參數(shù)的管理,我覺得這樣子更優(yōu)雅一些:

import pymysql.cursors
 
config = {
     'host':'127.0.0.1',
     'port':3306,
     'user':'root',
     'password':'zhyea.com',
     'db':'employees',
     'charset':'utf8mb4',
     'cursorclass':pymysql.cursors.DictCursor,
     }
 
# Connect to the database
connection = pymysql.connect(**config)

插入數(shù)據(jù):

執(zhí)行sql語句前需要獲取cursor,因?yàn)榕渲媚J(rèn)自動(dòng)提交,故在執(zhí)行sql語句后需要主動(dòng)commit,最后不要忘記關(guān)閉連接:

from datetime import date, datetime, timedelta
import pymysql.cursors
 
#連接配置信息
config = {
     'host':'127.0.0.1',
     'port':3306,
     'user':'root',
     'password':'zhyea.com',
     'db':'employees',
     'charset':'utf8mb4',
     'cursorclass':pymysql.cursors.DictCursor,
     }
# 創(chuàng)建連接
connection = pymysql.connect(**config)
 
# 獲取明天的時(shí)間
tomorrow = datetime.now().date() + timedelta(days=1)
 
# 執(zhí)行sql語句
try:
  with connection.cursor() as cursor:
    # 執(zhí)行sql語句,插入記錄
    sql = 'INSERT INTO employees (first_name, last_name, hire_date, gender, birth_date) VALUES (%s, %s, %s, %s, %s)'
    cursor.execute(sql, ('Robin', 'Zhyea', tomorrow, 'M', date(1989, 6, 14)));
  # 沒有設(shè)置默認(rèn)自動(dòng)提交,需要主動(dòng)提交,以保存所執(zhí)行的語句
  connection.commit()
 
finally:
  connection.close();

執(zhí)行查詢:

import datetime
import pymysql.cursors
 
#連接配置信息
config = {
     'host':'127.0.0.1',
     'port':3306,
     'user':'root',
     'password':'zhyea.com',
     'db':'employees',
     'charset':'utf8mb4',
     'cursorclass':pymysql.cursors.DictCursor,
     }
# 創(chuàng)建連接
connection = pymysql.connect(**config)
 
# 獲取雇傭日期
hire_start = datetime.date(1999, 1, 1)
hire_end = datetime.date(2016, 12, 31)
 
# 執(zhí)行sql語句
try:
  with connection.cursor() as cursor:
    # 執(zhí)行sql語句,進(jìn)行查詢
    sql = 'SELECT first_name, last_name, hire_date FROM employees WHERE hire_date BETWEEN %s AND %s'
    cursor.execute(sql, (hire_start, hire_end))
    # 獲取查詢結(jié)果
    result = cursor.fetchone()
    print(result)
  # 沒有設(shè)置默認(rèn)自動(dòng)提交,需要主動(dòng)提交,以保存所執(zhí)行的語句
  connection.commit()
 
finally:
  connection.close();

這里的查詢支取了一條查詢結(jié)果,查詢結(jié)果以字典的形式返回:

從結(jié)果集中獲取指定數(shù)目的記錄,可以使用fetchmany方法:

result = cursor.fetchmany(2)

不過不建議這樣使用,最好在sql語句中設(shè)置查詢的記錄總數(shù)。

獲取全部結(jié)果集可以使用fetchall方法:

result = cursor.fetchall()

因?yàn)橹挥袃蓷l記錄,所以上面提到的這兩種查詢方式查到的結(jié)果是一樣的:

復(fù)制代碼 代碼如下:

[{'last_name': 'Vanderkelen', 'hire_date': datetime.date(2015, 8, 12), 'first_name': 'Geert'}, {'last_name': 'Zhyea', 'hire_date': datetime.date(2015, 8, 21), 'first_name': 'Robin'}]

在django中使用

在django中使用是我找這個(gè)的最初目的。目前同時(shí)支持python3.4、django1.8的數(shù)據(jù)庫backend并不好找。這個(gè)是我目前找到的最好用的。

設(shè)置DATABASES和官方推薦使用的MySQLdb的設(shè)置沒什么區(qū)別:

DATABASES = {
   'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mytest',
        'USER': 'root',
        'PASSWORD': 'zhyea.com',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}
 

關(guān)鍵是這里:我們還需要在站點(diǎn)的__init__.py文件中添加如下的內(nèi)容:

import pymysql
pymysql.install_as_MySQLdb()

最后給大家附上pymysql實(shí)現(xiàn)增刪改查的代碼,希望大家能夠喜歡

#!/usr/bin/python
#coding:gbk
import pymysql
from builtins import int

#將MysqlHelper的幾個(gè)函數(shù)寫出來

def connDB():               #連接數(shù)據(jù)庫
  conn=pymysql.connect(host="localhost",user="root",passwd="zx69728537",db="student");
  cur=conn.cursor();
  return (conn,cur);

def exeUpdate(conn,cur,sql):        #更新或插入操作
  sta=cur.execute(sql);
  conn.commit();
  return (sta);

def exeDelete(conn,cur,IDs):        #刪除操作
  sta=0;
  for eachID in IDs.split(' '):
    sta+=cur.execute("delete from students where Id=%d"%(int(eachID)));
  conn.commit();
  return (sta);
    
def exeQuery(cur,sql):           #查找操作
  cur.execute(sql);
  return (cur);
  
def connClose(conn,cur):          #關(guān)閉連接,釋放資源
  cur.close();
  conn.close();

result=True;
print("請選擇以上四個(gè)操作:1、修改記錄,2、增加記錄,3、查詢記錄,4、刪除記錄.(按q為退出)");
conn,cur=connDB();
number=input();
while(result):
  if(number=='q'):
    print("結(jié)束操作");
    break;
  elif(int(number)==1):
    sql=input("請輸入更新語句:");
    try:
      exeUpdate(conn, cur, sql);
      print("更新成功");
    except Exception:
      print("更新失敗");
      raise;
  elif(int(number)==2):
      sql=input("請輸入新增語句:");
      try:
        exeUpdate(conn, cur, sql);
        print("新增成功");
      except Exception:
        print("新增失敗");
        raise;
  elif(int(number)==3):
    sql=input("請輸入查詢語句:");
    try:
      cur=exeQuery(cur, sql);
      for item in cur:
        print("Id="+str(item[0])+" name="+item[1]);
    except Exception:
      print("查詢出錯(cuò)");
      raise;
  elif(int(number)==4):
    Ids=input("請輸入Id,并用空格隔開");
    try:
      exeDelete(conn, cur, Ids);
      print("刪除成功");
    except Exception:
      print("刪除失敗");
      raise;
  else:
    print("非法輸入,將結(jié)束操作!");
    result=False;
    break;
  print("請選擇以上四個(gè)操作:1、修改記錄,2、增加記錄,3、查詢記錄,4、刪除記錄.(按q為退出)");
  number=input("請選擇操作");

相關(guān)文章

  • Python 使用 Redis 作為緩存的操作方法

    Python 使用 Redis 作為緩存的操作方法

    在現(xiàn)代Web應(yīng)用和數(shù)據(jù)密集型服務(wù)中,使用Redis作為緩存可以提升性能和響應(yīng)速度,Redis是一個(gè)高性能的內(nèi)存中數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),支持多種數(shù)據(jù)結(jié)構(gòu)如字符串、哈希、列表等,并提供持久性和分布式支持,本文給大家介紹Python 使用 Redis 作為緩存的操作方法,感興趣的朋友一起看看吧
    2024-10-10
  • Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)

    Python解析json之ValueError: Expecting property name enclosed in

    這篇文章主要給大家介紹了關(guān)于Python解析json報(bào)錯(cuò):ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)的解決方法,文中介紹的非常詳細(xì),需要的朋友們可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • 一文帶你搞懂Python中的數(shù)據(jù)容器

    一文帶你搞懂Python中的數(shù)據(jù)容器

    這篇文章主要為大家詳細(xì)介紹了Python中數(shù)據(jù)容器的相關(guān)資料,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定的幫助,感興趣的可以了解一下
    2022-11-11
  • pygame實(shí)現(xiàn)俄羅斯方塊游戲(基礎(chǔ)篇3)

    pygame實(shí)現(xiàn)俄羅斯方塊游戲(基礎(chǔ)篇3)

    這篇文章主要介紹了pygame實(shí)現(xiàn)俄羅斯方塊游戲基礎(chǔ)的第3篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 使用Python繪制實(shí)時(shí)的動(dòng)態(tài)折線圖

    使用Python繪制實(shí)時(shí)的動(dòng)態(tài)折線圖

    這篇文章主要為大家詳細(xì)介紹了如何使用Python繪制實(shí)時(shí)的動(dòng)態(tài)折線圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • 關(guān)于Python?中IndexError:list?assignment?index?out?of?range?錯(cuò)誤解決

    關(guān)于Python?中IndexError:list?assignment?index?out?of?rang

    這篇文章主要介紹了Python?中IndexError:list?assignment?index?out?of?range?錯(cuò)誤解決,概述了兩個(gè)常見的列表函數(shù),它們可以幫助我們在替換兩個(gè)列表時(shí)幫助我們處理?Python?中的索引錯(cuò)誤,需要的朋友可以參考下
    2023-05-05
  • Python中的shape()詳解

    Python中的shape()詳解

    這篇文章主要介紹了Python中的shape()詳解,在debug深度學(xué)習(xí)相關(guān)代碼的時(shí)候,很容易出現(xiàn)shape()這樣形式的東西,用來告知輸出數(shù)據(jù)的形式,需要的朋友可以參考下
    2023-08-08
  • 使用Python對EXCEL數(shù)據(jù)的預(yù)處理

    使用Python對EXCEL數(shù)據(jù)的預(yù)處理

    這篇文章主要介紹了使用Python處理EXCEL基礎(chǔ)操作篇2,如何使用Python對EXCEL數(shù)據(jù)的預(yù)處理,文中提供了解決思路和部分實(shí)現(xiàn)代碼,一起來看看吧
    2023-03-03
  • python使用裝飾器和線程限制函數(shù)執(zhí)行時(shí)間的方法

    python使用裝飾器和線程限制函數(shù)執(zhí)行時(shí)間的方法

    這篇文章主要介紹了python使用裝飾器和線程限制函數(shù)執(zhí)行時(shí)間的方法,主要涉及timelimited函數(shù)的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Python實(shí)現(xiàn)人生重開模擬器小游戲講解

    Python實(shí)現(xiàn)人生重開模擬器小游戲講解

    這篇文章主要介紹了Python實(shí)現(xiàn)人生重開模擬器小游戲,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01

最新評(píng)論

北碚区| 云梦县| 永康市| 阿巴嘎旗| 洛阳市| 广灵县| 三穗县| 普安县| 江西省| 康平县| 卓资县| 拜泉县| 神木县| 泰顺县| 赣州市| 全南县| 海林市| 喀什市| 崇明县| 万山特区| 凤翔县| 桃园市| 枣阳市| 沅江市| 仙游县| 安康市| 中卫市| 五莲县| 育儿| 凤翔县| 淅川县| 临沂市| 奉贤区| 阜城县| 温泉县| 甘孜| 漳浦县| 崇义县| 江阴市| 丰台区| 历史|