簡體   English   中英

UnboundLocalError:僅在導入的函數中賦值之前引用的局部變量

[英]UnboundLocalError: local variable referenced before assignment in imported function only

我寫了一個函數,應該將數據從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__':

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM