Ошибка типа: __init __ () получил неожиданный аргумент ключевого слова «камера» - PullRequest
0 голосов
/ 28 апреля 2020

Я понятия не имею, что это значит, я пытался исследовать это, но не мог найти никаких решений. Видимо, что-то не так с connection = create_connection (), я пытаюсь создать базу данных камер с подключением mysql, используя Navicat. Домашняя страница работает, но при попытке получить доступ к странице камер для доступа к моей базе данных, она просто показывает мне ошибку типа, я попытался прокрутить вниз и посмотреть на ошибки, но все, что я получаю, это каталоги, но некоторые выделяются так:

  • connection = create_connection ()
  • , cursorclass = py mysql .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)

1 Ответ

0 голосов
/ 28 апреля 2020

Проблема была в вашей функции create_connection(). Вы должны заменить camera=root на user=rrot примерно так:

#database connection function
def create_connection():
    return pymysql.connect(
        host='localhost',
        user='root',   #changed this from `camera` to `user`
        password='Rigi',
        db='cameras',
        charset='utf8mb4'
        ,cursorclass=pymysql.cursors.DictCursor
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...