python - 从云上托管的 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 服务器放在云中?
解决方案
是的,您连接到数据库的方式不会改变。它就像更改主机名并提供您需要的任何凭据(访问令牌、用户信息等)一样简单。一旦连接到数据库,插入数据的方式就不会改变。
这是一个很好的脚本,应该提供一些信息:https ://gist.github.com/kirang89/7161185
推荐阅读
- ruby - 这个循环的复杂度是多少
- c++ - 如何使用字符串::find()?
- nativescript - 如何在 Nativescript 中创建 MediaSession?
- google-app-engine - ImportError:GAE 中没有名为 cloudstorage 的模块
- node.js - 尝试在 TypeScript 中添加监听事件
- excel - 如何在 Excel 中生成 n 个介于 -100 到 100 之间且总和为零的随机数?
- javascript - 循环遍历两个字符串数组并将它们设置为对象属性
- javascript - 使用 Mocha 和 Chai 进行 REST API 测试 - 未处理的承诺拒绝
- rust - 如何用新格式化的字符串替换字符串切片 Vec 中的一个元素?
- swagger-2.0 - openapi 是否支持复杂类型的默认值?