记录——python与华为云数据库MYSQL的交互

it2023-02-03  48

前言

      在学习过程中想要将程序处理后的图片保存到云端以供更加方便的管理及使用,因此学习了一点这方面的东西。(但基本上都是官方提供好的SDK)       本文主要记录下华为云的使用。(因为找合适的云平台以及处理网络接口等问题花了太多不必要的时间,所以想记录下给后面的人提供个方便。)       后面的话其实发现仅仅使用数据库来存储图片的话是不够高效的,最好是用云储存来存储具体内容,用数据库存储数据的下载路径以及储存数据的关键信息。这样能够更高效的实现存取图片以及信息管理。       如果文章哪里有问题的话,欢迎指正。

华为云

注册

       这个其实没什么好讲的,注册+实名认证就行了。

云数据库RDS

       我们实名认证之后就可以领取免费一个月的华为云数据库了       因为我已经领取过了,所以没有具体配置的图了。对于像我这种存储不是很重要的数据,而且主要就是用于学习的话,那种安全组和虚拟私有云什么的就默认配置就行了。当我们创建好数据库实例之后会进入这样的一个页面。

      首先点击数据管理服务DAS。       再点击新增数据库登录,再添加一个账号。添加完账号之后我们回到实例管理。点击自己创建的实例名称。再点击左边的连接管理。

下面就是重点了,敲黑板!(这里花了我好久好久时间)

      这里有公网连接和内网连接。因为我们是用python进行远程交互的,所以必须选择外网连接。(刚开始我以为是我接口和安全组规则的问题,傻乎乎的在这改了好久。。。还有就是网上很多教程是用的以前的华为云,有个远程连接的按钮。我也一样找了好久。。。)       涉及到公网的话,这个时候我们就需要去申请一个弹性公网的IP了。在华为云里面网络部分就有弹性公网IP EIP。进入之后我们可以直接点击右上角的购买弹性公网IP。如果是个人用,配置就设置跟我一样就可以了。价格还是很便宜的。       购买完成之后它会提供给我们一个IP,这就是我们的公网IP了,我们回到公网连接的那里,点击绑定就好了。绑定完成之后我们到下面的安全组规则那里点击一键添加。(一键添加的是允许所有IP访问。当然密码错误肯定是不行的,有能力的话可以自定义规则,我试了指定地址的,但是不知道为什么访问不了,也没深究,知道的话可以告诉我下)如果只是使用华为云数据库的话这样就已经配置好了。后面就可以通过python与之交互了。

python端连接数据库

      下面呢就是在python端的程序了。

import pymysql #连接数据库 db = pymysql.connect(host = '公网IP' ,user = "用户名" ,passwd=" 密码" ,port= 端口号 ,db="数据库名称" # 数据库名称 ,charset='utf8'# 字符编码 ) db.close() #关闭连接

      这里的用户名和密码就是上面我们新增数据库登录时设置的账号和密码。       运行这段程序没有报错的话就说明你已经配置成功并且可以连接了。

python使用数据库

      因为我也没学过数据库,就只是看了几条基本的语句,所以如果说错了的话告诉我一下。       介绍使用的话我也就介绍两种,一种是插入,还有一种是查询。       为了方便观看,我就直接贴完整的程序了。       如果列名是汉字的话,不需要在外面加引号!查询where后面的条件不一定是等于,随便自己定义。       最好还是去看一下sql的基础语句知识,简单应用的话不难。十分钟就足够了。

插入

import pymysql #连接数据库 db = pymysql.connect(host = '公网IP' ,user = "用户名" ,passwd=" 密码" ,port= 端口号 ,db="数据库名称" # 数据库名称 ,charset='utf8'# 字符编码 )` # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 插入命令 #此处的%s为占位符 sql_insert="insert into 表的名称(列的名称1,列的名称2,列的名称3) values (%s,%s,%s)" #元组的形式传入值 data = (存入的数据1,存入的数据2,存入的数据3) cursor.execute(sql_insert,data)#执行插入 #不提交的话云数据库不会改变 db.commit() #提交到数据库执行 cursor.close()# 关闭游标 db.close() #关闭连接

查询

import pymysql #连接数据库 db = pymysql.connect(host = '公网IP' ,user = "用户名" ,passwd=" 密码" ,port= 端口号 ,db="数据库名称" # 数据库名称 ,charset='utf8'# 字符编码 )` # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 查询命令 #此处的%s为占位符 sql_query='select 想要获取的列 from 表的名称 where 查询已知条件的列名=%s' #如果是多个判断,则还是以元组的形式传入值 data = 条件 cursor.execute(sql_query,data)#执行查询 result = cursor.fetchone()[0]#接受符合条件的一条数据 #result里面存放的就是查询结果了 cursor.close()# 关闭游标 db.close() #关闭连接
最新回复(0)