python pymysql flask 簡易使用 和返回指定的json格式資料
阿新 • • 發佈:2019-02-03
pymysql.demo import pymysql import json #print(print.__doc__) conn = pymysql.connect(host="192.168.169.132", user="root", password="111111", database="zb") cursor = conn.cursor() #cursor.execute("insert into tuser (name, pass) values ('ccc', 'ccc')") #conn.commit() cursor.execute("select * from tuser") sb=cursor.fetchall() sb1 = {"data":sb,"status":1} print(sb1) #{'data': ((1, 'cc', 'cc', 0, None, None), (3, 'ccc', 'ccc', 0, None, None), (4, 'a', '0cc175b9c0f1b6a831c399e269772661', None, None, None), (12, 'e', 'e1671797c52e15f763380b45e841ec32', None, None, None), (13, 'r', '4b43b0aee35624cd95b910189b3dc231', None, None, None), (14, 'aaa', '47bce5c74f589f4867dbd57e9ca9f808', None, None, None), (16, 'aaaa', '74b87337454200d4d33f80c4663dc5e5', None, None, None), (17, '1', 'c4ca4238a0b923820dcc509a6f75849b', None, None, None), (18, '2', 'c81e728d9d4c2f636f067f89cc14862c', None, None, None), (19, '23', '37693cfc748049e45d87b8c7d8b9aacd', None, None, None), (20, '234', '289dff07669d7a23de0ef88d2f7129e7', None, None, None), (21, '2345', '81b073de9370ea873f548e31b8adc081', None, None, None), (22, 'ee', '08a4415e9d594ff960030b921d42b91e', None, None, None), (23, '66', '3295c76acbf4caaed33c36b1b5fc2cb1', None, None, None)), 'status': 1} print(sb1['data'][2]) #(4, 'a', '0cc175b9c0f1b6a831c399e269772661', None, None, None) ''' for key in sb1: print(key,"value:",sb1[key]) cursor.execute("select * from tuser") for i in range(cursor.rowcount): record = cursor.fetchone() print(record) ''' cursor.execute("select * from tuser") print(cursor.rowcount) courses = [] for i in range(cursor.rowcount): record = cursor.fetchone() course = {} course["name"] = record[0] course["info"] = record[1] course["price"] = record[2] course["sdate"] = str(record[3]) course["edate"] = str(record[4]) course["id"] = record[5] courses.append(course) print(courses) cursor.execute("select * from tuser") print(cursor.rowcount) courses = [] data = {} for i in range(cursor.rowcount): record = cursor.fetchone() course = {} course["name"] = record[0] course["info"] = record[1] course["price"] = record[2] course["sdate"] = str(record[3]) course["edate"] = str(record[4]) course["id"] = record[5] courses.append(course) data['code'] = "haha" dew = [] ew = {} ew['xcode']="a" dew.append(ew) data['status'] = "1" data['data'] = courses dew.append(data['data']) data['xcode'] = dew print(data) # 'data': ((1, 'cc', 'cc', 0, None, None), (3, 'ccc', 'ccc', 0, None, None), (4, 'a', '0cc175b9c0f1b6a831c399e269772661', None, None, None), (12, 'e', 'e1671797c52e15f763380b45e841ec32', None, None, None), (13, 'r', '4b43b0aee35624cd95b910189b3dc231', None, None, None), (14, 'aaa', '47bce5c74f589f4867dbd57e9ca9f808', None, None, None), (16, 'aaaa', '74b87337454200d4d33f80c4663dc5e5', None, None, None), (17, '1', 'c4ca4238a0b923820dcc509a6f75849b', None, None, None), (18, '2', 'c81e728d9d4c2f636f067f89cc14862c', None, None, None), (19, '23', '37693cfc748049e45d87b8c7d8b9aacd', None, None, None), (20, '234', '289dff07669d7a23de0ef88d2f7129e7', None, None, None), (21, '2345', '81b073de9370ea873f548e31b8adc081', None, None, None), (22, 'ee', '08a4415e9d594ff960030b921d42b91e', None, None, None), (23, '66', '3295c76acbf4caaed33c36b1b5fc2cb1', None, None, None)), 'status': 1} # (4, 'a', '0cc175b9c0f1b6a831c399e269772661', None, None, None) # 14 # [{'name': 1, 'info': 'cc', 'price': 'cc', 'sdate': '0', 'edate': 'None', 'id': None}, {'name': 3, 'info': 'ccc', 'price': 'ccc', 'sdate': '0', 'edate': 'None', 'id': None}, {'name': 4, 'info': 'a', 'price': '0cc175b9c0f1b6a831c399e269772661', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 12, 'info': 'e', 'price': 'e1671797c52e15f763380b45e841ec32', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 13, 'info': 'r', 'price': '4b43b0aee35624cd95b910189b3dc231', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 14, 'info': 'aaa', 'price': '47bce5c74f589f4867dbd57e9ca9f808', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 16, 'info': 'aaaa', 'price': '74b87337454200d4d33f80c4663dc5e5', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 17, 'info': '1', 'price': 'c4ca4238a0b923820dcc509a6f75849b', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 18, 'info': '2', 'price': 'c81e728d9d4c2f636f067f89cc14862c', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 19, 'info': '23', 'price': '37693cfc748049e45d87b8c7d8b9aacd', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 20, 'info': '234', 'price': '289dff07669d7a23de0ef88d2f7129e7', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 21, 'info': '2345', 'price': '81b073de9370ea873f548e31b8adc081', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 22, 'info': 'ee', 'price': '08a4415e9d594ff960030b921d42b91e', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 23, 'info': '66', 'price': '3295c76acbf4caaed33c36b1b5fc2cb1', 'sdate': 'None', 'edate': 'None', 'id': None}] # 14 # {'code': 'haha', 'status': '1', 'data': [{'name': 1, 'info': 'cc', 'price': 'cc', 'sdate': '0', 'edate': 'None', 'id': None}, {'name': 3, 'info': 'ccc', 'price': 'ccc', 'sdate': '0', 'edate': 'None', 'id': None}, {'name': 4, 'info': 'a', 'price': '0cc175b9c0f1b6a831c399e269772661', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 12, 'info': 'e', 'price': 'e1671797c52e15f763380b45e841ec32', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 13, 'info': 'r', 'price': '4b43b0aee35624cd95b910189b3dc231', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 14, 'info': 'aaa', 'price': '47bce5c74f589f4867dbd57e9ca9f808', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 16, 'info': 'aaaa', 'price': '74b87337454200d4d33f80c4663dc5e5', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 17, 'info': '1', 'price': 'c4ca4238a0b923820dcc509a6f75849b', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 18, 'info': '2', 'price': 'c81e728d9d4c2f636f067f89cc14862c', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 19, 'info': '23', 'price': '37693cfc748049e45d87b8c7d8b9aacd', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 20, 'info': '234', 'price': '289dff07669d7a23de0ef88d2f7129e7', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 21, 'info': '2345', 'price': '81b073de9370ea873f548e31b8adc081', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 22, 'info': 'ee', 'price': '08a4415e9d594ff960030b921d42b91e', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 23, 'info': '66', 'price': '3295c76acbf4caaed33c36b1b5fc2cb1', 'sdate': 'None', 'edate': 'None', 'id': None}], 'xcode': [{'xcode': 'a'}, [{'name': 1, 'info': 'cc', 'price': 'cc', 'sdate': '0', 'edate': 'None', 'id': None}, {'name': 3, 'info': 'ccc', 'price': 'ccc', 'sdate': '0', 'edate': 'None', 'id': None}, {'name': 4, 'info': 'a', 'price': '0cc175b9c0f1b6a831c399e269772661', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 12, 'info': 'e', 'price': 'e1671797c52e15f763380b45e841ec32', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 13, 'info': 'r', 'price': '4b43b0aee35624cd95b910189b3dc231', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 14, 'info': 'aaa', 'price': '47bce5c74f589f4867dbd57e9ca9f808', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 16, 'info': 'aaaa', 'price': '74b87337454200d4d33f80c4663dc5e5', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 17, 'info': '1', 'price': 'c4ca4238a0b923820dcc509a6f75849b', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 18, 'info': '2', 'price': 'c81e728d9d4c2f636f067f89cc14862c', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 19, 'info': '23', 'price': '37693cfc748049e45d87b8c7d8b9aacd', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 20, 'info': '234', 'price': '289dff07669d7a23de0ef88d2f7129e7', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 21, 'info': '2345', 'price': '81b073de9370ea873f548e31b8adc081', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 22, 'info': 'ee', 'price': '08a4415e9d594ff960030b921d42b91e', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 23, 'info': '66', 'price': '3295c76acbf4caaed33c36b1b5fc2cb1', 'sdate': 'None', 'edate': 'None', 'id': None}]]}
mysql.py
import pymysql def get_conn(): conn = pymysql.connect(host="192.168.169.132", user="root", password="111111", database="zb", ) return conn #def execute(conn, sql): # cursor = conn.cursor() # cursor.execute(sql) # conn.commit() # return cursor def select(cursor, sql): cursor.execute(sql) return cursor def insert(cursor, sql): cursor.execute(sql) def update(cursor, sql): cursor.execute(sql)
main.py
from flask import Flask from flask import request import json import mysql import uuid import hashlib app = Flask("live-server") def toJson(**kwargs): return json.dumps(kwargs) # 把json轉換成字串 # 建立session def getSession(): uuidObj = uuid.uuid1() uuidStr = str(uuidObj) # 對UUID進行 md5 hash print(type(uuidStr)) # str, bytes QString QByteArray return hashlib.md5(uuidStr.encode()).hexdigest() @app.route("/addcourse", methods=['POST', 'GET']) def addcourse(): try: json = request.json print(json) session = json['session'] name = json['name'] desc = json['desc'] teacher = json['teacher'] sdate = json['sdate'] edate = json['edate'] price = json['price'] conn = mysql.get_conn() cursor = conn.cursor() mysql.select(cursor, "select id from tuser where session='%s'" % session) if cursor.rowcount == 0: return toJson(result="err", reason="session error") sql = "insert into tcourse (name, info, price, sdate, edate) values ('%s', '%s', %d, '%s', '%s')" % ( name, desc, price, sdate, edate ) print(sql) mysql.insert(cursor, sql) mysql.select(cursor, "select max(id) from tcourse") courseid = cursor.fetchone()[0] mysql.select(cursor, "select id from tuser where name='%s'" % teacher) userid = cursor.fetchone()[0] mysql.insert(cursor, "insert into trelation (userid, courseid, relation) values(%d, %d, 0)" % (userid, courseid)) conn.commit() except Exception as e: print(str(e)) return toJson(result = "err", reason=str(e)) return toJson(result='ok') @app.route("/charge", methods=['POST', 'GET']) def charge(): try: json = request.json print(json) session = json['session'] money = json['money'] conn = mysql.get_conn() cursor = conn.cursor() # 1. 使用者表 # 1. 先獲得原來的餘額 # 2. 相加再更新 # 2. 充值記錄表 # 1. 插入一條記錄 mysql.select(cursor, "select balance, id from tuser where session='%s'" % session) if cursor.rowcount == 0: return toJson(result="err", reason="session error") record = cursor.fetchone() balance = record[0] userid = record[1] new_balance = balance + money mysql.update(cursor, "update tuser set balance=%d where id=%d" % (new_balance, userid)) mysql.insert(cursor, "insert into tcharge (userid, money, balance) values (%d, %d, %d)" % (userid,money, new_balance)) conn.commit() return toJson(result="ok", balance=new_balance) except Exception as e: return toJson(result="err", reason=str(e)) @app.route("/login", methods=['POST', 'GET']) def login(): try: json = request.json print(json) username = json['username'] password = json['password'] password = hashlib.md5(password.encode()).hexdigest() type = json['type'] conn = mysql.get_conn() cursor = conn.cursor() mysql.select(cursor, "select * from tuser where name='%s' and pass='%s'" % (username, password)) if cursor.rowcount == 1: session = getSession() mysql.update(cursor, "update tuser set session='%s' where name='%s'" % (session, username)) conn.commit() return toJson(result = "ok", session = session) except Exception as e: return toJson(result = "err", reason = str(e)) # 3. 返回資料給客戶端 # return return toJson(result = "err", reason = "username or password error") @app.route("/reg", methods=['POST', 'GET']) def reg(): try: # 1. 獲取客戶端的資料 json = request.json username = json['username'] password = json['password'] password = hashlib.md5(password.encode()).hexdigest() # 2. 寫入資料庫 # 使用pymysql訪問資料 conn = mysql.get_conn() cursor = conn.cursor() mysql.insert(cursor, "insert into tuser (name, pass)values('%s', '%s')" % (username, password)) conn.commit() # { # result: ok # } # { # result: err, # reason: whasdfsadf # } except Exception as e: return toJson(result = "err", reason = str(e)) # 3. 返回資料給客戶端 # return cursor.execute("select * from tuser limit 4") print(cursor.rowcount) courses = [] data = {} for i in range(cursor.rowcount): record = cursor.fetchone() course = {} course["name"] = record[0] course["info"] = record[1] course["price"] = record[2] course["sdate"] = str(record[3]) course["edate"] = str(record[4]) course["id"] = record[5] courses.append(course) data['code'] = 1 data['data'] = courses print(data) print(toJson(result='no',shuju=courses,datas=data)) return(toJson(result='no',shuju=courses,datas=data)) app.run(host="0.0.0.0", port=10099) #{'code': 1, 'data': [{'name': 1, 'info': 'cc', 'price': 'cc', 'sdate': '0', 'edate': 'None', 'id': None}, {'name': 3, 'info': 'ccc', 'price': 'ccc', 'sdate': '0', 'edate': 'None', 'id': None}, {'name': 4, 'info': 'a', 'price': '0cc175b9c0f1b6a831c399e269772661', 'sdate': 'None', 'edate': 'None', 'id': None}, {'name': 12, 'info': 'e', 'price': 'e1671797c52e15f763380b45e841ec32', 'sdate': 'None', 'edate': 'None', 'id': None}]} # {"result": "no", "shuju": [{"name": 1, "info": "cc", "price": "cc", "sdate": "0", "edate": "None", "id": null}, {"name": 3, "info": "ccc", "price": "ccc", "sdate": "0", "edate": "None", "id": null}, {"name": 4, "info": "a", "price": "0cc175b9c0f1b6a831c399e269772661", "sdate": "None", "edate": "None", "id": null}, {"name": 12, "info": "e", "price": "e1671797c52e15f763380b45e841ec32", "sdate": "None", "edate": "None", "id": null}], "datas": {"code": 1, "data": [{"name": 1, "info": "cc", "price": "cc", "sdate": "0", "edate": "None", "id": null}, {"name": 3, "info": "ccc", "price": "ccc", "sdate": "0", "edate": "None", "id": null}, {"name": 4, "info": "a", "price": "0cc175b9c0f1b6a831c399e269772661", "sdate": "None", "edate": "None", "id": null}, {"name": 12, "info": "e", "price": "e1671797c52e15f763380b45e841ec32", "sdate": "None", "edate": "None", "id": null}]}}