我把一个pythondjango项目推到heroku上,效果很好。在django模型的my view.py文件中,我添加了连接到本地mysql数据库的函数,从mysql中检索数据。函数是view.py,如下所示:
@login_required
def results(request):
data=[]
data1 = []
owner = request.user
owner = str(owner)
db = MySQLdb.connect(user='root', db='aaa', passwd='xxxxx', host='localhost')
cursor = db.cursor()
cursor.execute("SELECT search_content, id, title, author, institute, FROM result_split where username = '%s'" % (owner))
data = cursor.fetchall()
db.close()
return render(request, "webdevelop/results.html", {"datas": data})
但是,当我试图打开显示已部署heroku网站中mysql数据库数据的页面时,它显示错误:“operationalerror at/results/(2003,“cannot connect to mysql server on'localhost'([errno 111]connection denied)”)”。我怎样才能让这个heroku项目连接到我的本地mysql数据库?或者我应该选择另一个?
1条答案
按热度按时间dwbf0jvd1#
首先,您需要确保用于连接mysql的用户和密码是正确的,并且该用户具有使用所选数据库的正确权限。然后可以检查mysql是否接受localhost上的连接。
至于直接寻址连接被拒绝的异常,请检查mysql套接字之类的东西,它用于与本地主机应用程序(如django项目)通信。套接字必须存在并在mysql中配置。
我还建议您看看类似sqlalchemy for python的东西,它将帮助您使用python对象直接与数据库交互。例如,
连接到数据库:
您现在可以使用
session
变量使用其从sqlalchemy会话类继承的函数执行查询和更新。sqlalchemy还包括一个声明性模型,用于告诉python表的外观。例如,
这些例子对我在flask中的项目很有效,在django中应该足够有效。