2017-05-25 29 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__': 
相關問題