【发布时间】:2021-06-21 11:30:01
【问题描述】:
我正在制作关于 mysql 输出数据的 api。我按照此链接执行此操作,但出现类型错误。 https://flask.palletsprojects.com/en/2.0.x/config/ 我不知道我的代码有什么问题。我试图解决这个问题。我点击此链接How do I save database configuration without writting them on my python file,但仍然无法正常工作。
# -*- coding: utf-8 -*-
from flask import Flask, g, render_template, request, jsonify, json, current_app
import pymysql
import pymysql.cursors
from flask_sqlalchemy import SQLAlchemy
import flask
from global_setup import *
app = Flask(__name__)
def connect_db():
return pymysql.connect(MY_DB_SERVER,
MY_DB_USER,
MY_DB_PASS,
MY_DB_DB,
MY_DB_PORT,
charset='utf8',
cursorclass=pymysql.cursors.DictCursor)
def get_db():
'''Opens a new database connection per request.'''
if not hasattr(g, 'db'):
g.db = connect_db()
return g.db
@app.teardown_appcontext
def close_db(error):
'''Closes the database connection at the end of request.'''
if hasattr(g, 'db'):
g.db.close()
@app.route('/api/CRM',methods = ['POST'])
def index1():
cursor = get_db().cursor()
cursor.execute("select * from customer")
rows = cursor.fetchall()
return jsonify(rows)
if __name__ == '__main__':
app.config['JSON_AS_ASCII'] = False
app.run(debug=True, host='0.0.0.0', port=5000)
错误:
127.0.0.1 - - [21/Jun/2021 18:40:29] "POST /api/CRM HTTP/1.1" 500 -
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2088, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2073, in wsgi_app
response = self.handle_exception(e)
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2070, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1515, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1513, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1499, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "/home/Teemo.Tsui/git/KF/api_123.py", line 34, in index1
cursor = get_db().cursor()
File "/home/Teemo.Tsui/git/KF/api_123.py", line 23, in get_db
g.db = connect_db()
File "/home/Teemo.Tsui/git/KF/api_123.py", line 18, in connect_db
cursorclass=pymysql.cursors.DictCursor)
TypeError: __init__() takes 1 positional argument but 6 positional arguments (and 2 keyword-only arguments) were given
这是我的 global_setup.py
MY_DB_SERVER = ""
MY_DB_USER = ""
MY_DB_PASS = ""
MY_DB_DB = ""
MY_DB_PORT = 3306
【问题讨论】:
标签: python python-3.x flask