【问题标题】:Connection to MySQL DB with App Engine使用 App Engine 连接到 MySQL 数据库
【发布时间】:2017-10-05 13:09:14
【问题描述】:

我正在关注here 的 Google Cloud MySQL 教程。我照原样复制了 main.py 中的代码,但出现以下错误:

File "D:\BitBucket\Code\main.py", line 44, in get db = connect_to_cloudsql() File "D:\BitBucket\Code\main.py", line 34, in connect_to_cloudsql db = MySQLdb.connect(host='127.0.0.1', user=CLOUDSQL_USER, passwd=CLOUDSQL_PASSWORD) File "C:\Python27\lib\site-packages\MySQLdb\__init__.py", line 81, in Connect return Connection(*args, **kwargs) File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 191, in __init__ super(Connection, self).__init__(*args, **kwargs2) TypeError: connect() argument 2 must be string, not None

我看到connect_to_cloudsql() 需要接受两个参数,但我在文档中找不到任何指向什么的内容。

我的 app.yaml 看起来像这样:

  # application: reliance-it
  # # application: reliance-test
  # module: default
  # version: 5
  # runtime: python27
  # api_version: 1
  # instance_class: F2
  # threadsafe: true
  # automatic_scaling:
  #   min_idle_instances: 0
  #   max_idle_instances: automatic
  #   min_pending_latency: 30ms
  #   max_pending_latency: automatic

  application: reliance-group
  module: default
  version: 1
  runtime: python27
  api_version: 1
  threadsafe: yes

  env_variables:
      CLOUDSQL_CONNECTION_NAME: reliance-group:us-central1:cash-flow
      CLOUDSQL_USER: root
      CLOUDSQL_PASSWORD: p_ROOTadmin$123

  libraries:
  - name: MySQLdb
    version: "latest"

  - name: webapp2
    version: latest
  - name: jinja2
    version: latest
  - name: pycrypto
    version: "2.6"
  - name: PIL
    version: latest

  inbound_services:
  - mail

  handlers:
  - url: /stylesheets
    static_dir: css
    mime_type: text/css
  - url: /scripts
    static_dir: js

  - url: /favicon\.ico
    static_files: css/images/favicon.ico
    upload: css/images/favicon.ico



  #========Default Handler=========
  - url: /.*
    script: main.application

【问题讨论】:

  • 你的app.yaml 是什么样的?确保按照此处所述添加相应的环境变量:cloud.google.com/appengine/docs/standard/python/cloud-sql/…
  • 我已经更新了原始帖子以显示我的 app.yaml 内容
  • 看起来环境变量设置不正确。我不在 Windows 上,所以不完全确定。尝试引用这些值。您可以通过在阅读它们后将它们记录到控制台来检查它们是否在您的代码中正确设置。另外,请务必更改您的密码。
  • 谢谢,我会试试的。 DW 这当然不是我的真实密码,尽管谢谢指出。

标签: python mysql google-app-engine mysql-python


【解决方案1】:

原来CLOUDSQL_CONNECTION_NAME = os.environ.get('connection-name') 的输出是None。只需将其替换为CLOUDSQL_CONNECTION_NAME = 'connection-name' 并对CLOUDSQL_USERCLOUDSQL_PASSWORD 执行相同操作即可。如果人们遇到同样的问题,我希望我的回答对他们有​​所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 2017-09-08
    • 2013-10-24
    • 1970-01-01
    • 2013-05-22
    相关资源
    最近更新 更多