Синтаксическая ошибка Python в GCP App Engine - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь установить соединение с базой данных MySQL, используя python в движке приложения GCP. Цель, простой тест, сделать так, чтобы он возвращал / печатал первую строку таблицы базы данных.

Используя мой блокнот jupyter, я могу подключиться, используя sqlalchemy для python, и нормально печатать первую строку.

Поэтому я попытался изменить первоначальный учебник "Привет, мир" в движке приложения, чтобы сделать то же самое. Но когда я копирую код в файл main.py, он выдает единственную синтаксическую ошибку, когда я пытаюсь использовать create_enginge в строке 7.

У кого-то есть идеи, почему это синтаксическая ошибка вмой main.py файл в движке приложения, но не в ноутбуках jupyter?

from flask import Flask
import pandas as pd
import sqlalchemy as sa
import pymysql
app = Flask(__name__)
@app.route('/')
engine = sa.create_engine('''mysql+pymysql://{username}:
                             {password}@{host}:{port}/{db_name}''')
with engine.connect() as conn:
    # Execute the query and fetch all results
    response = conn.execute(
        "SELECT * FROM table_name "
        "LIMIT 1"
    ).fetchall()
    # Print Results
    for row in response:
        print("sub_event_id = ", row[0], )
        print("event_type   = ", row[1])
        print("date_time    = ", row[2])
        print("ip           = ", row[3])
        print("property_id  = ", row[4])
        print("contact_id   = ", row[5])
        print("address_id   = ", row[6], "\n")
engine.dispose()

Снимок экрана с ошибкой

Ответы [ 2 ]

1 голос
/ 31 октября 2019

@app.route - это декоратор, ему нужна функция для декорирования, и ее нельзя никуда поместить, например:

@app.route('/')
def hello_world():
    # your code here
    return 'Hello, World!'

Ваша проблема не в коде на строке 7, а в том, чтовам не хватает определения функции перед ним. И я действительно сомневаюсь, что это работает в Jupyter.

0 голосов
/ 31 октября 2019

Решение: добавление определения функции в начале кода исправило синтаксическую ошибку.

Обнаружено, что из ответа polku, еще раз спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...