python - 未绑定(bind)本地错误: local variable referenced before assignment in imported function only

标签 python mysql

我编写了一个函数,可以将数据从 mysql 数据库导入到 python 中。当我在包含该函数的文件中运行该函数时,该函数可以工作,但是当我尝试将该函数导入另一个 python 文件时,我收到“Unbound LocalError”错误。

我已经尝试将变量“sqlcode_sm”声明为全局变量,但它不能解决问题。

from __future__ import print_function
import pandas as pd
import numpy as np
import pymysql 
pymysql.install_as_MySQLdb()
import MySQLdb as mdb
from datetime import datetime
import os
import sys


def sec_master_retriever(tables):
    # should be any column(s) or * for all

    sql_table       = "sec_master"


    ######SQL PART: Retrieving the data
    # Connect to the MySQL instance
    db_host = 'localhost'
    db_user = 'root'
    db_pass = 'xyz'
    db_name = 'securities_master'
    con = mdb.connect(db_host, db_user, db_pass, db_name)
    sqlcode_sm = """SELECT %s FROM %s AS sm ;""" % (tables, sql_table)
    sqltable       = pd.read_sql_query(sqlcode_sm, con=con)

    return sqltable

如果我现在继续写:

df = sec_master_retriever('*')

这可以正常工作,但打开一个新的 Python 文件,导入函数并执行它,如下所示:

from sec_master_retriever import sec_master_retriever as smr
df2 = smr("*")

导致错误:“UnboundLocalError:赋值前引用了局部变量‘sqlcode_sm’”

感谢您的帮助

最佳答案

移动此行

pymysql.install_as_MySQLdb()  

在里面

def sec_master...  

或以下

if __name__ == '__main__':

关于python - 未绑定(bind)本地错误: local variable referenced before assignment in imported function only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44185924/

相关文章:

python - .py 文件的依赖项

python - 我应该在哪个文件中定义为模型创建的 ModelForm?

php - 更改数据库中图像的路径

php - 使用包含连接时如何从 MySql 数据库中获取?

java - 有没有很好的API来获取有关当前事件的信息?

python - 基于值的颜色填充?

python - 如何在 Python 中将一串位转换为十六进制字符串?

java - 如何将整数和 Varchar(20) 添加并在 mysql 中存储为 Varchar(20)

php - MySQL 和 PHP - 从数据库获取最后的评论

MySQL IF 语句真的不像 Sql Server