python - 导入模块所需的模块
问题描述
我正在使用 Python/Flask 为大学作业编写一个 Web 应用程序,为了保持我的 app.py 文件整洁,我有一个函数可以查询存储在另一个文件中的数据库。此函数使用 pymysql 和 json 模块,我无法以使其工作的方式加载这些模块 - 我不断收到属性错误,提示未定义 pymysql。
我尝试将导入语句放入我的模块文件 (DBjson.py)、我的模块中包含的函数和 app.py 中。这是我的模块代码:
def fetchFromDB(host,port,dbname,user,password,query,jsonString=False):
import pymysql # these import statements are in the function in this example - one of several places I've tried them!
import json
conn = pymysql.connect(host, user=user,port=port, passwd=password, db=dbname)
cursorObject = conn.cursor(pymysql.cursors.DictCursor)
with cursorObject as cursor:
cursor.execute(query)
result = cursor.fetchall()
conn.close()
if jsonString == True:
try:
for i in range(len(result)):
result[i]['dateTime'] = result[i]['dateTime'].strftime('%Y-%m-%d %H:%M')
except:
pass
result = json.dumps(result)
return result
以及来自我的 app.py 的路线:
import pymysql
import json
@app.route('/')
def index():
wds = DBjson.fetchFromDB(host,port,dbname,user,password,weatherQuery)
bds = DBjson.fetchFromDB(host,port,dbname,user,password,bikesQuery)
return render_template('weatherDateTime.html', wds=wds, bds=bds)
关于如何完成这项工作的任何帮助?
谢谢!
编辑 - 我写了一个测试脚本,我可以从中加载我的模块并运行我的函数没问题 - 我在 DBjson.py 模块文件的开头和函数之外有我的导入语句。这是我不知道的 Flask/范围界定的一些怪癖吗?
PS - 感谢到目前为止的所有回复
import DBjson
query = "SELECT * FROM dublinBikesInfo WHERE dateTime LIKE (SELECT MAX(datetime) FROM dublinBikesInfo);"
#login details for AWS RDS DB
host="xyza"
port=3306
dbname="xyza"
user="xyza"
password="xyza"
a = DBjson.fetchFromDB(host,port,dbname,user,password,query)
print(a)
解决方案
嗨,您的代码中有一个缩进错误,所有语句都必须在您创建的函数/方法内。
`def method():
#code here`
并且在页面开头定义函数/方法之前尝试导入库也很好!
在您的场景中,请将所有与函数/方法相关的语句放在函数/方法中!!
推荐阅读
- php - 使用php函数显示html
- memory - 计算机如何区分数字和字符?
- vba - 如何创建具有多个命令按钮(OLEObject)的新工作表?
- java - 为什么我收到 java.lang.AbstractMethodError: org.apache.poi.xssf.usermodel.XSSFCellStyle.getFillBackgroundColorColor()?
- javascript - 在 JavaScript 中向数组添加唯一对象
- python - 使用LSTM进行迭代分类的正确方法是什么
- perl - perl中哈希内的数组
- javascript - gulp4 的 watch 任务的问题
- xcode - XCode 9.3 缺少时间线滑块
- arduino - 将文本从 PROGMEM 传递到 Arduino 中的功能