从托管在云上的 Python 访问 MySQL 数据库

Accessing MySQL DATABASE from Python hosted on cloud

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

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 网络传输 API 到监听端口的 MySQL 服务器,无需进一步向下处理到访问层,因为数据包永远不会离开机器,我理解这是 TCP/IP 堆栈访问层的目的,也就是说,抽象出数据所经过的物理路径。

我的猜测是否连贯一致?

如果我错了,我怎样才能把 MySQL 服务器放到云端?

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

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