Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python UnboundLocalError:仅在导入函数中赋值之前引用的局部变量_Python_Mysql - Fatal编程技术网

Python UnboundLocalError:仅在导入函数中赋值之前引用的局部变量

Python UnboundLocalError:仅在导入函数中赋值之前引用的局部变量,python,mysql,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.ins

我已经编写了一个函数,可以将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__':

谢谢,这个问题已经解决了!