MySQLdb работает локально, но нет при развертывании - PullRequest
0 голосов
/ 05 апреля 2020

Я создал приложение, используя Google App Engine и облако. sql Я получил хост сервера базы данных через Google. Когда я подключаюсь к базе данных, используя пакет MySQLdb, приложение работает нормально. Когда я пытаюсь развернуть приложение, я получаю внутреннюю ошибку сервера. Я обнаружил, что это вызвано тем, что соединение с базой данных не удается. (приложение работает при развертывании, когда я не подключаюсь к базе данных) Кто-то знает, что является причиной проблемы, и почему я не могу подключиться к базе данных при развертывании приложения? спасибо

# define a class MainPage which inherits from the class webapp2.RequestHandler
# The class displays the main page of our application
class MainPage(webapp2.RequestHandler):
    # define the method get in our class MainPage - to handle http get requests
    # creates a response "Hello World!"
    def get(self):
        g.db_conn = MySQLdb.connect(
                                    host='the host ip num',
                                    user='my username',
                                    passwd='my password',
                                    db='the db name')
        cursor = g.db_conn.cursor()
        query = """ select * from manager107.air_crew """
        cursor.execute(query)
        rows = str(cursor.fetchall())
        cursor.close()
        g.db_conn.close()        
        # the response will be in a text/plain format
        self.response.headers['Content-Type'] = 'text/plain'
        # Add the text 'Hello World !' to the response
        self.response.write('Hello world!', rows)

app = webapp2.WSGIApplication([('/', MainPage)],
                              debug=True)

app.yaml



# -----------------------------------------
# programming language
# -----------------------------------------
runtime: python27

# -----------------------------------------
# python sub version
# -----------------------------------------
api_version: 1

# ---------------------------------------------------------------------
# threadsafe - to prevent collision between calls to the application
#              from different clients
# ---------------------------------------------------------------------
threadsafe: true

# ---------------------------------------------------------------------
# handlers - define an application file for each URL we get
# ---------------------------------------------------------------------
handlers:
- url: /
  script: helloworld.app

libraries:
- name: MySQLdb
  version: latest

это единственные файлы, которые у меня есть! пожалуйста помогите

1 Ответ

1 голос
/ 05 апреля 2020

Вы не подключаетесь к облаку SQL, используя правильный путь. Чтобы подключиться к Cloud SQL из App Engine, вам нужно иметь файл JSON с учетными данными учетной записи службы, которую вы собираетесь использовать, и вы должны использовать имя подключения Cloud SQL, которое вы сможете для просмотра в пользовательском интерфейсе Cloud Console.

Все необходимые шаги, а также некоторые примеры можно найти в официальной документации 1004 * и в репозитории GitHub .

...