Mysql不会加载应用程序的用户数据

2024-09-27 21:34:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚将一个应用程序从本地的devenv复制到了prodenv,我的flask应用程序没有加载数据,而是显示了no blog posts right now...

我已经验证了以下内容:

  • 数据库用户有权访问表。你知道吗
  • mysql正在运行
  • 再次验证查询(工作正常)
  • 尝试将MYSQL_DATABASE_HOST设置为localhostxx.xxx.xxx.xxx但没有效果。你知道吗
  • 验证了我的导入(from flask_mysqldb import MySQLmysql运行良好)-确实如此

应用程序类型

from flask_mysqldb import MySQL

app = Flask(__name__)
app.secret_key = 'mysecret'

# mail server config
app.config['MAIL_SERVER'] = 'mailserver.net'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USERNAME'] = 'contact@mysite.com'
app.config['MAIL_PASSWORD'] = 'mypass'


# mysql config
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_PORT'] = '3306'
app.config['MYSQL_DB']   = 'mydb'
app.config['MYSQL_USER'] = 'myusr'
app.config['MYSQL_PASSWORD'] = 'mypass'

mysql = MySQL()
mysql.init_app(app)
c = mysql.connect().cursor()
@app.route('/', methods=('GET', 'POST'))
def email():
    form = EmailForm()

c.execute("SELECT post_title, post_name, YEAR(post_date) as YEAR, MONTH(post_date) as MONTH FROM mydb.wp_posts WHERE post_status='publish' ORDER BY RAND() LIMIT 3")
    blogposts = c.fetchall()

    print(blogposts)
    if request.method == 'POST':
        if form.validate() == False:
            return 'Please fill in all fields <p><a href="/">Try Again</a></p>'
        else:
            msg = Message("Message from your visitor",
                          sender='contact@mysite.com',
                          recipients=['contact@mysite.com'])
            msg.body = """
            From: %s
            """ % (form.email.data)
            mail.send(msg)
            return render_template('email_submit_thankyou.html')
    elif request.method == 'GET':
        return render_template('index.html', form=form, blogposts=blogposts)
if __name__ == '__main__':
    app.run()

templates/index.html包含:

<ul>
    {% for blogpost in blogposts %}
    <li><a href="mysite.com/wordpress/{{blogpost[2]}}/{{blogpost[3]}}/{{blogpost[1]}}">{{blogpost[0]}}</a></li>
    {% else %}
    <li>no blog posts right now...</li>
    {% endfor %}
<div class="clearL"> </div>
</ul>

我在/var/log/mysql/mysql-slow.log中发现一个“慢”查询:

# Time: 170101 16:34:32
# User@Host: myuser[myuser] @ localhost [127.0.0.1]
# Query_time: 0.004649  Lock_time: 0.001712 Rows_sent: 3  Rows_examined: 53
SET timestamp=1483306472;
SELECT
        post_title, post_name, YEAR(post_date) as YEAR, MONTH(post_date) as MONTH
FROM mydb.wp_posts WHERE post_status='publish' ORDER BY RAND() LIMIT 3;

那么,这里出了什么问题?你知道吗


Tags: nameformcomconfigappdatemysqlmail

热门问题