首页 > 解决方案 > 从云上托管的 Python 访问 MySQL DATABASE

问题描述

我在本地安装了一个 MySQL 服务器,并且我有访问 MySQL 数据库并执行一个简单查询的 Python 代码:

from mysql.connector import connect
from mysql.connector import ProgrammingError

DB = {
   'user':'andrei',
   'password':'qwertttyy',
   'host':'localhost', 
   'port':'3306', 
   'db':'my_database'
}


class Connection:

    instance = None 

    def __new__(cls):
        if not cls.instance:
            try:
                cls.instance = connect(**DB)
            except:
                raise 
        return cls.instance 

    

def excuteDQL(query):
    cnx = Connection()
    cursor = cnx.cursor()
    try:
        cursor.execute(query)
        return cursor.fetchall() 
    except ProgragrammingError as err:
        print('You have an error in your MySQL syntax. Please check and retry')
        return [] 
        


if __name__ == '__main__':

    while True:
        query = input('Enter a SQL query: ')
        for tuple in executeDQL(query):
            print(tuple) 

如果我去那里找到一个云 MySQL 托管服务并为其付费,访问会像用不同的信息更改数据库映射一样简单吗?

我认为这应该是因为连接仍将通过标准 TCP/IP 进行,但在这种情况下,它碰巧返回同一台发出. 我猜,在底层,数据按照 TCP/IP 规则打包到 IP 层,然后这些数据作为 IP 包从 Python 进程通过 OS Networking API 传输到监听端口的 MySQL 服务器,无需进一步向下处理到接入层,因为数据包永远不会离开机器,我理解这是TCP / IP堆栈的接入层的目的,即抽象数据所采用的物理路径。

我在我的猜测中说了一些连贯的话吗?

如果我错了,如何将 MySQL 服务器放在云中?

标签: pythonmysqlcloudmysql-python

解决方案


是的,您连接到数据库的方式不会改变。它就像更改主机名并提供您需要的任何凭据(访问令牌、用户信息等)一样简单。一旦连接到数据库,插入数据的方式就不会改变。

这是一个很好的脚本,应该提供一些信息:https ://gist.github.com/kirang89/7161185


推荐阅读