![](/img/trans.png)
[英]Problem with importing module and NameError: global name 'module' is not defined
[英]Creating and importing a module - NameError: global name 'c' is not defined
我想创建一个简单的脚本来从sqlite数据库中提取和绘制数据。 但是,当我导入模块时,它不喜欢我所做的事情。 谁能指导我做错了什么?
每个脚本在同一ipython笔记本中运行时都有效,当我尝试使用以下代码创建模块时,它将失败:
我的pulldata.py脚本:
def main()
import matplotlib.pyplot as plt
import datetime
import sqlite3
c = sqlite3.connect('Test_db19.db')
c.connect()
def pull_data(table1, field1):
x_axis = []
y_axis = []
dates = []
for row in c.execute('SELECT date, {fn} FROM {tn} ORDER BY date'.format(tn=table1, fn=field1)):
y_axis.append(row[1])
dates.append(row[0])
for date in dates:
date1 = datetime.datetime.strptime(date, "%m/%Y").date()
x_axis.append(date1)
plt.plot(x_axis,y_axis, marker = "o")
plt.xlabel('Date')
plt.ylabel(field1)
plt.title(table1)
plt.xticks(rotation=70)
plt.legend()
plt.show()
if __name__ == "__main__":
main()
尝试导入它:
import pulldata as pd
pd.pull_data(table_name, column_name)
我正进入(状态:
"NameError: global name 'c' is not defined"
任何建议/帮助将不胜感激!
您的导入是正确的,但是您在main方法中打开了连接,将其用作模块时不会运行。 你为什么不搬这些
import matplotlib.pyplot as plt
import datetime
import sqlite3
在方法之外到您的pulldata.py文件顶部,然后将其移动
c = sqlite3.connect('Test_db19.db')
c.connect()
在您的pull_data方法中。
一切都在
if __name__ == "__main__":
如果导入文件,将不会运行。 在这种情况下,只有在
python pulldata.py
import pulldata
由于未定义c变量,因此
if __name__ == "__main__"
最终是错误的,因为导入时pulldata并不是您的主要对象,因此它不会输入main()
函数且未定义c。 同样, main()
函数中的c是局部变量,因此即使定义了它,也无法从其他函数访问它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.