鞏固mysql基礎(chǔ)-使用flask框架+pymysql(二)

目標(biāo):

使用flask框架+pymongo練習(xí)mysql

需求:

  1. 添加人員
  • 姓名必填
  • 郵箱必填
  • 姓名不能重復(fù)
  • 郵箱不能重復(fù)
  1. 使用post請求爬舰,form-data請求格式

?tip:flask有封裝好的操作數(shù)據(jù)庫的flask-sqlalchemy瘫怜,目標(biāo)還是以mysql為主。
我在網(wǎng)上找了一個簡單封裝pymysql的例子做了一些改動:

  1. 使用configparser庫把配置文件配置在文件中
  2. 將例子中ExecNonQuery方法中的execute方法改成了批量的executemany方法

https://www.jb51.net/article/178054.htm

??我們先看看pymysql封裝的類
db_mysql:

import pymysql
import configparser


class MYSQL:

    def __init__(self):
        config = configparser.ConfigParser()
        filename = 'config.ini'
        config.read(filename, encoding='utf-8')
        self.host = config.get('data','host')
        self.user = config.get('data','user')
        self.pwd = config.get('data','pwd')
        self.db = config.get('data','db')

    def __GetConnect(self):
        if not self.db:
            raise (NameError,"未設(shè)置數(shù)據(jù)庫")
        self.conn = pymysql.connect(host= self.host,user = self.user,password = self.pwd,database =self.db,charset = "utf8")
        cur = self.conn.cursor()
        if not cur:
            raise (NameError, "連接數(shù)據(jù)庫失敗")
        else:
            return cur

    def ExecQuery(self, sql):
        """
        執(zhí)行查詢語句
        返回的是一個包含tuple的list文黎,list的元素是記錄行状共,tuple的元素是每行記錄的字段

        調(diào)用示例:
            ms = MYSQL(host="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics")
            resList = ms.ExecQuery("SELECT id,NickName FROM WeiBoUser")
            for (id,NickName) in resList:
              print str(id),NickName
        """
        cur = self.__GetConnect()
        cur.execute(sql)
        resList = cur.fetchall()

        # 查詢完畢后必須關(guān)閉連接
        self.conn.close()
        return resList

    def ExecNonQuery(self, sql,values):
        """
        執(zhí)行非查詢語句

        調(diào)用示例:
          cur = self.__GetConnect()
          cur.execute(sql)
          self.conn.commit()
          self.conn.close()
        """
        cur = self.__GetConnect()
        #傳入要用list
        cur.executemany(sql,values)
        self.conn.commit()
        self.conn.close()

if __name__ == '__main__':
    m=MYSQL()
    mysql = "insert into staff""(staff_name,staff_dept,staff_age,staff_email,staff_sex)values(%s,%s,%s,%s,%s)"
    values =[('小王', '測試部', '15', 'ww.', '1')]
    m.ExecNonQuery(mysql,values)

??看一下配置文件
config.ini

[data]
host=*****
user=***
pwd=****
db=****

??添加人員接口
py_flask

from flask import Flask
import db_mysql
from flask import request
import json


app = Flask(__name__)


@app.route('/add_staff', methods=["POST","GET"])
def add_staff():
    data = request.form
    staff=db_mysql.MYSQL()
    mysql = "insert into staff(staff_name,staff_dept,staff_age,staff_email,staff_sex)values(%s,%s,%s,%s,%s)"
    staff_name = data['staff_name']
    staff_dept = data['staff_dept']
    staff_age = data['staff_age']
    staff_email = data['staff_email']
    print(staff_name)
    print(staff_email)
    if staff_name is '':
        return {'code': '1001', 'result': '姓名不能為空'}
    if staff_email is '':
        return {'code': '1001', 'result': 'email不能為空'}
    staff_sex = data['staff_sex']
    #查詢姓名重復(fù)
    mes=staff.ExecQuery(sql= "select*from staff where staff_name = '"+staff_name+"'" )
    #郵箱重復(fù)
    mes1=staff.ExecQuery(sql= "select*from staff where staff_email = '"+staff_email+"'" )
    values = [(staff_name, staff_dept, staff_age, staff_email, staff_sex)]
    if mes is not ():
        return {'code': '1002', 'result': '人員重復(fù)'}
    if mes1 is not():
        return {'code': '1003', 'result': 'email重復(fù)'}
    else:
        staff.ExecNonQuery(sql=mysql, values=values)
    return {'code': '0', 'result': 'succsed'}

if __name__ == '__main__':

    app.run (host='0.0.0.0', port=5001, debug=True)

下面我們用postman試試

image.png

??下一篇為了更方便體驗我們可以用docker+dockerfile快速構(gòu)建一個環(huán)境蚓哩。實現(xiàn)快速搭建開發(fā)環(huán)境蔓涧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市笋额,隨后出現(xiàn)的幾起案子元暴,更是在濱河造成了極大的恐慌,老刑警劉巖兄猩,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茉盏,死亡現(xiàn)場離奇詭異鉴未,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鸠姨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門铜秆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人讶迁,你說我怎么就攤上這事连茧。” “怎么了巍糯?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵啸驯,是天一觀的道長。 經(jīng)常有香客問我祟峦,道長罚斗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任宅楞,我火速辦了婚禮针姿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘厌衙。我一直安慰自己距淫,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布迅箩。 她就那樣靜靜地躺著溉愁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饲趋。 梳的紋絲不亂的頭發(fā)上拐揭,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機(jī)與錄音奕塑,去河邊找鬼堂污。 笑死,一個胖子當(dāng)著我的面吹牛龄砰,可吹牛的內(nèi)容都是我干的盟猖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼换棚,長吁一口氣:“原來是場噩夢啊……” “哼式镐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起固蚤,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤娘汞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后夕玩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體你弦,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡惊豺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了禽作。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尸昧。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖旷偿,靈堂內(nèi)的尸體忽然破棺而出烹俗,到底是詐尸還是另有隱情,我是刑警寧澤狸捅,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布衷蜓,位于F島的核電站,受9級特大地震影響尘喝,放射性物質(zhì)發(fā)生泄漏磁浇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一朽褪、第九天 我趴在偏房一處隱蔽的房頂上張望置吓。 院中可真熱鬧,春花似錦缔赠、人聲如沸衍锚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽戴质。三九已至,卻和暖如春踢匣,著一層夾襖步出監(jiān)牢的瞬間告匠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工离唬, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留后专,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓输莺,卻偏偏與公主長得像戚哎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嫂用,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354