【发布时间】:2020-04-28 12:31:29
【问题描述】:
我不知道这意味着什么,我尝试研究它但找不到任何解决方案。显然 connection=create_connection() 有问题,我正在尝试使用 Navicat 创建一个带有 mysql 连接的相机数据库。主页可以正常工作,但在尝试访问相机页面以访问我的数据库时,它只会向我显示类型错误,我尝试向下滚动并查看错误,但我得到的只是目录,但有些像这样突出:
- connection=create_connection()
- ,cursorclass=pymysql.cursors.DictCursor
- 返回连接(*args, **kwargs)
下面是我的部分代码:
from flask import Flask, render_template, request, redirect, session,url_for
import pymysql, datetime, os
app = Flask(__name__)
# Make the WSGI interface available at the top level so wfastcgi can get it.
wsgi_app = app.wsgi_app
#database connection function
def create_connection():
return pymysql.connect(
host='localhost',
camera='root',
password='Rigi',
db='cameras',
charset='utf8mb4'
,cursorclass=pymysql.cursors.DictCursor
)
@app.route('/')
def home():
"""Renders a sample page."""
return render_template("index.html",title="Home")
# read or list records in cameras table
@app.route("/cameras", methods = ["GET", "POST"])
def cameras():
connection=create_connection()
with connection.cursor() as cursor:
sql="SELECT * From cameras ORDER By cameraId DESC"
cursor.execute(sql)
#fetch all cameras into a list
cameras = cursor.fetchall()
return render_template("cameras.html", cameras = cameras, title="cameras Listing")
#return redirect(url_for('cameras'))
# create
@app.route("/new_camera", methods = ["GET", "POST"])
def newcamera():
connection=create_connection()
if request.method =="POST":
get = request.form
first_name = get["FirstName"]
last_name = get["LastName"]
#photo=
with connection.cursor() as cursor:
# Create a new record
sql = "INSERT INTO `cameras` (FirstName, LastName) VALUES (%s,%s)"
val=(first_name, last_name)
cursor.execute(sql, val)
#save values in dbase
connection.commit()
cursor.close()
return redirect("/cameras")
return redirect(url_for('cameras?do=new', title="Add New camera"))
#return render_template("cameras.html",title="Adding New camera")
#camera
# edit
@app.route("/edit_camera", methods = ["GET", "POST"])
def editcamera():
camera_id = request.args.get('id')# get the id parameter value
connection=create_connection()
if request.method =="POST":
get = request.form
first_name = get["FirstName"]
last_name = get["LastName"]
#picture=
with connection.cursor() as cursor:
# Update record
update_sql = "UPDATE cameras SET cameras.FirstName = %s,cameras.LastName=%s WHERE cameras.cameraId = %s"
values=(first_name,last_name,camera_id)
cursor.execute(update_sql,(values))
#save or commit values in dbase
connection.commit()
cursor.close()
return redirect("/cameras")
return render_template("camera.html", title ="Editing New camera")
#details
@app.route("/camera")
def camera():
cameraid = request.args.get('id')# get the id parameter value
connection=create_connection()
with connection.cursor() as cursor:
sql="SELECT * From cameras WHERE cameraId=%s"
values=(cameraid)
cursor.execute(sql, (values))
#fetch camera with specified Id
camera = cursor.fetchone()
return render_template("camera.html", camera=camera)
【问题讨论】:
-
将您创建的函数
create_connection()中的pymysql.connect()方法中的camera=root替换为user=root