2017-01-02 30 views
0

我正在尝试在flask中进行基本查询,并将其输出。在prod这是无法创建一个mysql游标。Flask Python App无法创建数据库光标

这里是app.py

#from flask_mysqldb import MySQL 
import pymysql.cursors 

connection = pymysql.connect(host='localhost', user='myusr', port=3306, password='mypass', db='mydb', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) 


@app.route('/', methods=('GET', 'POST')) 
def email(): 


    form = EmailForm() 

    try: 
     with connection.cursor() as cursor: 
      cursor.execute("SELECT post_title, post_name, YEAR(post_date) YEAR, MONTH(post_date) MONTH FROM mydb.wp_posts WHERE post_status='publish' ORDER BY RAND() LIMIT 3") 
      r = cursor.fetchall() 
      print(r) 
    Exception as e: 
     print(e) 
    finally: 
     connection.close() 

db gui程序有我的数据库用户这些访问权限(见黑线):收到 img

修订:::错误,当我包括上述try行:

2017/01/02 09:10:30 [error] 1042#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xxx.xxx.xxx, server: mysite.com, request: "GET/HTTP/1.1", upstream: "http://127.0.0.1:8001/", host: "mysite.com" 

我测试了这个导入(from flask_mysqldb import MySQL)在解释器中工作正常,本身也安装了mysql

我测试了上述工作的凭据通过gui db program

连接什么是我做错了什么?我正在关注烧瓶和mysql的official documentation,但现在我正在关注link2

这是为什么会失败?任何人都看到什么

谢谢

+1

请您提供收到错误消息。 –

+0

当我在上面包含'cursor'时,nginx会失败,Http 502错误 – Jshee

+0

@PavelRyvintsev - 请参阅更新的错误和db权限。 – Jshee

回答

0

请尝试更改您的代码通过以下方式和运行文件直接

from flask_mysqldb import MySQL 

app = Flask(__name__) 
app.config['MYSQL_HOST'] = 'localhost' 
app.config['MYSQL_PORT'] = '3306' 
app.config['MYSQL_DB'] = 'mydb' 
app.config['MYSQL_USER'] = 'myuser' 
app.config['MYSQL_PASSWORD'] = 'mypass' 
mysql = MySQL(app) 

@app.route('/') 
def test(): 
    cur = mysql.connection.cursor() 

if __name__ == '__main__': 
    app.run() 
+0

感谢您的答案。我试过这个,并导致一个'500内部服务器错误' – Jshee

+0

@Jshee内部服务器错误可能是任何东西。如果您将直接运行上述代码而不是通过Nginx运行,您将能够看到错误消息。就像运行其他python文件一样运行它。 –

+0

当我运行它像这样我得到:'python app.py'我得到:'*重新启动stat *调试器处于活动状态! *调试器引脚代码:115-763-111'想法? – Jshee