2017-05-25 68 views
0

我写了一个函数,该函数应该将数据从mysql数据库导入python。该函数在包含该函数的文件中运行时工作,但当我尝试将该函数导入另一个python文件时,出现“Unbound LocalError”错误。UnboundLocalError:仅在导入函数中赋值之前引用的本地变量

我已经尝试将变量'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'在赋值之前引用”

感谢您的帮助

+0

感谢低于这个已经解决了这个问题! – sebseb

回答

0

移动此行

pymysql.install_as_MySQLdb() 

任内

def sec_master... 

if __name__ == '__main__': 
相关问题