得到“ UnboundLocalError:分配前已引用本地变量'连接'”

时间:2019-09-10 02:43:47

标签: python mysql flask

我是python的新手,尝试通过将连接变量分配给其他.py文件中的函数来获取上述错误

我尝试将连接设置为无,但没有解决我的问题

views.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)

db.py

_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服务器

1 个答案:

答案 0 :(得分:1)

错误显示

NameError: name 'db' is not defined` 

所以这是您的主要问题,也是其他问题的根源。

你有

import FlaskWebProject1.db

因此您需要FlaskWebProject1.

connection = FlaskWebProject1.db.get_connection()

或者您应该导入

from FlaskWebProject1 import db