python搭建后台操作mysql数据库
1.python作为本地服务器使用post连接前端
1.1 引入模块
// 引入模块
from flask import Flask, jsonify, request # 引入核心处理模块
from flask_sqlalchemy import SQLAlchemy
from flask_cors import CORS
# noinspection PyUnresolvedReferences
import json
import zhenzismsclient as smsclient
import base64
from dataBase.mysql_manage import *
from post.matlab import *
import random
# 通过当前文件构建一个app应用,当前文件就是web_app程序的入口
app = Flask(__name__)
CORS(app) # 解决跨域问题
app.config
1.2 登录验证
(1)create(“user”)//创建用户信息列表(这个是在另外一个地方写的函数,会在1.3展示)
(2)a = select(“user”, “*”, “username =”"+req[‘username’]+""")//mysql的select查找函数,用来在user中查找用户名为req[‘username’]的信息(select在3.3中定义)
(3)return jsonify({‘massage’: 0})//以json形式返回到前端
@app.route('/login', methods=['POST']) # 登录
def login():
print("进入登陆查询")
req = request.get_json()//从前端接收到的数据
print(req)
create("user")//创建用户信息列表(这个是在另外一个地方写的函数,会在1.3展示)
print("返回主函数:创建成功")
a = select("user", "*", "username =\""+req['username']+"\"")//mysql的select查找函数,用来在user中查找用户名为req['username']的信息(select在3.3中定义)
print("返回主函数:"+str(a)+","+str(len(a)))
if len(a) == 0: # 查询不到(未注册)
return jsonify({'massage': 0})//以json形式返回到前端
elif a[0][1] == req["password"]: # 密码正确
return jsonify({'massage': 1})
else: # 密码错误
return jsonify({'massage': 2})
1.3 mysql创建user表
前面1.2中调用create函数即可在mysql中创建用户表-tablename为参数表名字
def create(tablename): # 创建用户表
print('创建表tablename:'+tablename)
sql = """
CREATE TABLE IF NOT EXISTS %s(
username VARCHAR(255) NOT NULL PRIMARY KEY,
password VARCHAR(255) NOT NULL
)""" %(tablename)
cursor.execute(sql)
print('创建结束')
2.python连接mysql数据库
host为ip地址、password为创建数据库时设立的密码,database为创建的数据库的名字
import pymysql
db = pymysql.connect(host="127.0.0.1",user= "root", password="123456",database= "user") # 连接数据库
cursor = db.cursor()
3.python对mysql数据库进行增删改除
3.1 删除
table_name为删除的元素所在表格的名字;where_condition为删除的元素的位置
删除的关键语句:"""DELETE FROM %s WHERE %s""" %
def delete_opera(table_name, where_condition): # 删除剧本/用户
print('开始删除:'+table_name+','+where_condition)
sql = """DELETE FROM %s WHERE %s""" %(table_name, where_condition)
print(sql)
try:
cursor.execute(sql)
db.commit()
a = 1
except:
db.rollback()
a = 0
return a
下图具体用到了删除操作:
if (a == 1): # 删除
b = req["column"]
c = "formname =" + "\"" + b["formname"] + "\""
d = delete_opera("operas", c)
if d == 1:
e = insert_opera("record", record)
return jsonify({'message': "删除成功!"})
else:
return jsonify({'message': "删除失败!"})
3.2 更新
table_name为删除的元素所在表格的名字;where_condition为更新的元素的位置,updateData为更新的数据。
更新的关键语句"""UPDATE %s SET %s WHERE %s""" %
def update_opera(table_name, where_condition, updateData): # 更新剧本/用户
print('开始更新:' + table_name + ',' + where_condition + ',' + str(updateData))
upd = ""
for i in updateData:
upd = upd + i + ","
upd = upd[:-1]
sql = """UPDATE %s SET %s WHERE %s""" %(table_name, upd, where_condition)
print(sql)
cursor.execute(sql)
db.commit()
a = 3
print('a',3)
return 3
下图为具体函数使用过程:
elif (a == 2): # 更新
updateData = []
updateData.append("formname = " + "\"" + req["newName"] + "\"")
localtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
updateData.append("filetime = " + "\"" + localtime + "\"") # 确定更新的数据
c = select("operas", "*", "formname = " + "\"" + req["newName"] + "\"")
if len(c) != 0: # 重名,返回错误
return jsonify({'message': 2})
else: # 未重名,更新数据
b = update_opera("operas", "formname = " + "\"" + req["oldName"] + "\"", updateData)
if b == 1:
c = insert_opera("record", record)
return jsonify({'message': 1}) # 更新成功
else:
return jsonify({'message': 0}) # 更新失败
3.3 查询
查询的关键语句"""select %s from %s where %s""" %
def select(table_name,list_view,where_condition): # 开始查询
print('开始查询:'+table_name+','+str(list_view)+','+where_condition)
if list_view != '*':
list_view = str(list_view[0])+''.join([','+str(list_view[i]) for i in range(1, len(list_view))])
sql = """select %s from %s where %s""" % (list_view, table_name, where_condition)\
if where_condition != "None" else \
"""select %s from %s""" %(list_view, table_name)
print(sql)
cursor.execute(sql)
a = cursor.fetchall() # 返回元组
print("查询结束")
print('a',a)
return a
3.4 插入
插入的关键语句sql = 'insert into {table}({keys}) values ({values})'.format
table_name为要插入的表格的名字,req为插入的内容
def insert_opera(table_name, req): #插入新剧本/记录
print('req',req)
print('reqtype',type(req))
print('开始插入新剧本:' + table_name + ',' + str(req))
keys = ', '.join(req.keys())
values = ', '.join(['%s'] * len(req))
print(keys)
print(tuple(req.values()))
sql = 'insert into {table}({keys}) values ({values})'.format(table=table_name, keys=keys, values=values)
try:
cursor.execute(sql, tuple(req.values()))
db.commit()
a = 1
except:
db.rollback()
a = 0
print("插入"+table_name+"结束")
return a
插入的具体使用:
a = insert_opera("record", record)
4.总结
mysql的删除、更新、查询、插入操作。
删除 | 更新 | 查询 | 插入 |
---|---|---|---|
"""DELETE FROM %s WHERE %s""" % | """UPDATE %s SET %s WHERE %s""" % | """select %s from %s where %s""" % | sql = 'insert into {table}({keys}) values ({values})'.format |
5.前端接收发送数据
ajax:ajax:post接收发送数据
axios:axios:post接收发送数据
码字不易~, 各位看官要是看爽了,可不可以三连走一波,点赞皆有好运!,不点赞也有哈哈哈~~~