我是python的新手,尝试通过将连接变量分配给其他.py文件中的函数来获取上述错误
我尝试将连接设置为无,但没有解决我的问题
from datetime import datetime
from flask import render_template, request, redirect, url_for, flash
from FlaskWebProject1 import app
import json
import mysql.connector
from mysql.connector import Error
import FlaskWebProject1.db
@app.route('/')
@app.route('/users')
def users():
try:
lstUsers = ''
#connect to DB
connection = db.get_connection()
if connection.is_connected():
#db_Info = connection.get_server_info()
#print("Connected to MySQL Server version ", db_Info)
cursor = connection.cursor(dictionary=True)
cursor.execute("select * from users;")
record = cursor.fetchall()
lstUsers = record
#print("Your connected to database: ", record)
except Error as e:
print("Error while connecting to MySQL", e)
finally:
if (connection.is_connected()):
cursor.close()
connection.close()
print("MySQL connection is closed")
return render_template('users.html',
title = 'Users Page',
users = lstUsers)
_connection = None
def get_connection():
global _connection
if not _connection:
_connection = mysql.connector.connect(user="bla@bla",
password='bla',
host="mysql.database.azure.com",
port=3306,
database='testdb')
return _connection
# List of stuff accessible to importers of this module. Just in case
__all__ = [ 'getConnection' ]
回溯(最近通话最近):文件 “ C:\ Users \ Usuario \ source \ repos \ FlaskWebProject1 \ FlaskWebProject1 \ FlaskWebProject1 \ views.py”, 第24行,在用户中 connection = db.get_connection()NameError:名称“ db”未定义
在处理上述异常期间,发生了另一个异常:
回溯(最近通话最近):文件 “ C:\ Users \ Usuario \ source \ repos \ FlaskWebProject1 \ FlaskWebProject1 \ env \ lib \ site-packages \ flask \ app.py”, 第1982行,在wsgi_app中 响应= self.full_dispatch_request()文件“ C:\ Users \ Usuario \ source \ repos \ FlaskWebProject1 \ FlaskWebProject1 \ env \ lib \ site-packages \ flask \ app.py”, 第1614行,在full_dispatch_request中 rv = self.handle_user_exception(e)文件“ C:\ Users \ Usuario \ source \ repos \ FlaskWebProject1 \ FlaskWebProject1 \ env \ lib \ site-packages \ flask \ app.py”, 第1517行,在handle_user_exception中 重新提升(exc_type,exc_value,tb)文件“ C:\ Users \ Usuario \ source \ repos \ FlaskWebProject1 \ FlaskWebProject1 \ env \ lib \ site-packages \ flask_compat.py”, 第33行,加价 提高价值文件“ C:\ Users \ Usuario \ source \ repos \ FlaskWebProject1 \ FlaskWebProject1 \ env \ lib \ site-packages \ flask \ app.py”, 第1612行,在full_dispatch_request中 rv = self.dispatch_request()文件“ C:\ Users \ Usuario \ source \ repos \ FlaskWebProject1 \ FlaskWebProject1 \ env \ lib \ site-packages \ flask \ app.py”, 第1598行,在dispatch_request中 返回self.view_functionsrule.endpoint文件“ C:\ Users \ Usuario \ source \ repos \ FlaskWebProject1 \ FlaskWebProject1 \ FlaskWebProject1 \ views.py”, 用户中的第37行 如果(connection.is_connected()):UnboundLocalError:分配前引用了本地变量'connection' 127.0.0.1--[2019年9月9日23:56:55]“ GET / HTTP / 1.1” 500- 127.0.0.1--[09 / Sep / 2019 23:56:55]“ GET /favicon.ico HTTP / 1.1” 404-
我希望将views.py文件中的连接变量分配给在db.py中返回连接的get_connection(),并使用该连接以无问题地连接到MySQL服务器
答案 0 :(得分:1)
错误显示
NameError: name 'db' is not defined`
所以这是您的主要问题,也是其他问题的根源。
你有
import FlaskWebProject1.db
因此您需要FlaskWebProject1.
connection = FlaskWebProject1.db.get_connection()
或者您应该导入
from FlaskWebProject1 import db