如何从运行在Google app Engine SDK上的Python应用访问本地MySQL实例?
最近,我正在谷歌开发者学院网站上学习“使用Python应用程序引擎和谷歌云SQL”教程。然而,我偶然发现了练习的第一部分“使用本地MySQL实例构建应用程序”。我无法将示例代码(main.py)连接到本地MySQL实例。不知道是否有人找到了解决这个问题的办法如何从运行在Google app Engine SDK上的Python应用访问本地MySQL实例?,python,mysql,google-app-engine,mysql-python,Python,Mysql,Google App Engine,Mysql Python,最近,我正在谷歌开发者学院网站上学习“使用Python应用程序引擎和谷歌云SQL”教程。然而,我偶然发现了练习的第一部分“使用本地MySQL实例构建应用程序”。我无法将示例代码(main.py)连接到本地MySQL实例。不知道是否有人找到了解决这个问题的办法 如果您能与我分享您如何设置MySQL,如何配置它,以便GAE的沙箱能够访问MySQL python连接器,那将是一件非常棒的事情。我曾经为一个项目成功地做到了这一点。步骤如下(适用于Windows): 在安装过程中安装mysql服务器请注意
如果您能与我分享您如何设置MySQL,如何配置它,以便GAE的沙箱能够访问MySQL python连接器,那将是一件非常棒的事情。我曾经为一个项目成功地做到了这一点。步骤如下(适用于Windows):
就像MySQL55一样,由于我是GAE、Python、MySQL的新手,并且使用GAE在macosx上开发,所以我花了一段时间才弄清楚如何让示例应用程序工作。因为我已经找到了解决方案,所以我想在这里分享它,这样您就可以按照我的过程使用本地MySQL实例在本地GAE SDK环境中启动并运行示例应用程序 就我个人而言,我发现这非常有用和方便,因为开发人员在自己的机器上使用本地MySQL实例开发GAE应用程序,然后再将其部署到Google App Engine PaaS上,这是非常自然的 说得够多了,下面是我想分享的程序:
- 在“导入”部分添加“导入MySQLdb”语句
- 将“CLOUDSQL\u INSTANCE=''”语句替换为“CLOUDSQL\u INSTANCE='localhost'”李>
- 需要重写“get_connection()”函数,因为MySQLdb包是与MySQL兼容的DB API v2.0接口。MySQLdb的“connect()”函数无法理解参数:“instance”、“database”和“password”。要使用MySQLdb包访问本地MySQL实例,需要重写“get_connection”函数,如下所示:
def get_connection():
return MySQLdb.connect(host=CLOUDSQL_INSTANCE, db=DATABASE_NAME,
user=USER_NAME, passwd=PASSWORD, charset='utf8')
http://localhost:8080
def conn_to_db():
return rdbms.connect(instance='MySQL55', database='Your_db_name_here', user='root', password='whatever_password_you_chose')
conn = conn_to_db()
cursor = conn.cursor()
cursor.execute('SELECT * FROM foo where foos = %s', (bar))
for row in cursor.fetchall():
var1 = row[0]
var2 = row[1]
conn.close()
def get_connection():
return MySQLdb.connect(host=CLOUDSQL_INSTANCE, db=DATABASE_NAME,
user=USER_NAME, passwd=PASSWORD, charset='utf8')