亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

適用環(huán)境

python版本 >=2.6或3.3

mysql版本>=4.1

安裝

可以使用pip安裝也可以手動下載安裝。

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

pip install PyMySQL

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

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

下載后解壓壓縮包。在命令行中進入解壓后的目錄,執(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)
 

也可以使用字典進行連接參數(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,因為配置默認自動提交,故在執(zhí)行sql語句后需要主動commit,最后不要忘記關閉連接:

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)
 
# 獲取明天的時間
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)));
  # 沒有設置默認自動提交,需要主動提交,以保存所執(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語句,進行查詢
    sql = 'SELECT first_name, last_name, hire_date FROM employees WHERE hire_date BETWEEN %s AND %s'
    cursor.execute(sql, (hire_start, hire_end))
    # 獲取查詢結果
    result = cursor.fetchone()
    print(result)
  # 沒有設置默認自動提交,需要主動提交,以保存所執(zhí)行的語句
  connection.commit()
 
finally:
  connection.close();

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

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

result = cursor.fetchmany(2)

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

獲取全部結果集可以使用fetchall方法:

result = cursor.fetchall()

因為只有兩條記錄,所以上面提到的這兩種查詢方式查到的結果是一樣的:

復制代碼 代碼如下:

[{'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中使用是我找這個的最初目的。目前同時支持python3.4、django1.8的數(shù)據(jù)庫backend并不好找。這個是我目前找到的最好用的。

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

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

關鍵是這里:我們還需要在站點的__init__.py文件中添加如下的內容:

import pymysql
pymysql.install_as_MySQLdb()

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

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

#將MysqlHelper的幾個函數(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):          #關閉連接,釋放資源
  cur.close();
  conn.close();

result=True;
print("請選擇以上四個操作:1、修改記錄,2、增加記錄,3、查詢記錄,4、刪除記錄.(按q為退出)");
conn,cur=connDB();
number=input();
while(result):
  if(number=='q'):
    print("結束操作");
    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("查詢出錯");
      raise;
  elif(int(number)==4):
    Ids=input("請輸入Id,并用空格隔開");
    try:
      exeDelete(conn, cur, Ids);
      print("刪除成功");
    except Exception:
      print("刪除失敗");
      raise;
  else:
    print("非法輸入,將結束操作!");
    result=False;
    break;
  print("請選擇以上四個操作:1、修改記錄,2、增加記錄,3、查詢記錄,4、刪除記錄.(按q為退出)");
  number=input("請選擇操作");

相關文章

  • 用Python逐行分析文件方法

    用Python逐行分析文件方法

    在本篇文章里我們給大家分享了關于用Python逐行分析文件方法知識點,有需要的朋友們跟著學習下。
    2019-01-01
  • 如何利用pandas工具輸出每行的索引值、及其對應的行數(shù)據(jù)

    如何利用pandas工具輸出每行的索引值、及其對應的行數(shù)據(jù)

    這篇文章主要介紹了如何利用pandas工具輸出每行的索引值、及其對應的行數(shù)據(jù),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Flask入門教程實例:搭建一個靜態(tài)博客

    Flask入門教程實例:搭建一個靜態(tài)博客

    這篇文章主要介紹了Flask入門教程實例:搭建一個靜態(tài)博客,本文主要介紹flask框架的環(huán)境配置以及一個靜態(tài)博客胡搭建實例,需要的朋友可以參考下
    2015-03-03
  • Python讀取Excel的方法實例分析

    Python讀取Excel的方法實例分析

    這篇文章主要介紹了Python讀取Excel的方法,實例分析了Python操作Excel文件的相關技巧,非常具有實用價值,需要的朋友可以參考下
    2015-07-07
  • Python中非常實用的一些功能和函數(shù)分享

    Python中非常實用的一些功能和函數(shù)分享

    這篇文章主要介紹了Python中非常實用的一些功能和函數(shù)分享,本文講解了帶任意數(shù)量參數(shù)的函數(shù)、使用Glob()查找文件、調試、生成唯一ID等內容,需要的朋友可以參考下
    2015-02-02
  • python用函數(shù)創(chuàng)造字典的實例講解

    python用函數(shù)創(chuàng)造字典的實例講解

    在本篇文章里小編給大家整理的是一篇關于python用函數(shù)創(chuàng)造字典的實例講解內容,有需要的朋友們可以學習參考下。
    2021-06-06
  • Python中SQLite數(shù)據(jù)庫的使用

    Python中SQLite數(shù)據(jù)庫的使用

    SQLite是一種輕型關系型數(shù)據(jù)庫,常用于嵌入式設備和移動應用中。Python中內置了SQLite模塊,可用于連接和操作SQLite數(shù)據(jù)庫。通過Python SQLite模塊,可以方便地創(chuàng)建、查詢和修改數(shù)據(jù)庫中的數(shù)據(jù),支持事務處理和數(shù)據(jù)庫操作的原子性保證
    2023-04-04
  • Python JSON常用編解碼方法代碼實例

    Python JSON常用編解碼方法代碼實例

    這篇文章主要介紹了Python JSON常用編解碼方法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • python入門游戲之井字棋實例代碼

    python入門游戲之井字棋實例代碼

    python井字棋游戲雖然看上去非常簡陋,但是卻非常值得學習,下面這篇文章主要給大家介紹了關于python入門游戲之井字棋的相關資料,需要的朋友可以參考下
    2021-11-11
  • Python?代碼智能感知類型標注與特殊注釋詳解

    Python?代碼智能感知類型標注與特殊注釋詳解

    這篇文章主要為大家介紹了Python?代碼智能感知類型標注與特殊注釋詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09

最新評論