当前位置:   article > 正文

python 外网远程连接华为云数据库增删改查_登录华为云数据库 代码

登录华为云数据库 代码

python 外网远程连接华为云数据库

控制台准备

最近在做python爬虫的时候,涉及到数据库的内容,本来打算本地搭建一个mysql的,在安装下面软件之后
image.png
报出未知错误而服务无法打开,防火墙也关了,谷歌了很多方法无果,最终选择暂时搁置问题,转战华为云免费送的一个月云数据库。如下图所示,开启箭头中的远程连接和远程连接白名单,白名单设置为0.0.0.0表示为任何主机ip都可连接,这里可以各取所需,不过在下是用来学习的,安全性不是很重要,故设为全过。
点击图中左下角开启远程连接之后, 在右边会显示一个公网ip,端口默认为3306,也可据需修改。

image.png

然后登入,先创建一个数据库,我这边命名为test

image.png

ok, 控制台端操作完毕,接下来就是python代码了

请求端python 连接并且创建数据表

下面是用python方式建立数据库,还有另外一种语法类似sql的连接方式,读者可百度了解

  1. from sqlalchemy import create_engine
  2. from sqlalchemy.ext.declarative import declarative_base
  3. from sqlalchemy import Column, Integer,String, DateTime
  4. from sqlalchemy.orm import sessionmaker
  5. #sqlalchemy是一个数据库操作模块 导入我们需要的
  6. Base = declarative_base()
  7. engine = create_engine("mysql+pymysql://【账号】:【密码】@【ip】:【端口】/【数据库名】",
  8. echo = True, pool_size = 5, max_overflow = 4, pool_recycle = 7200, pool_timeout = 30)
  9. #这是连接mysql的语句,也支持别的主流数据库连接,但是语法稍有区别,各位可百度谷歌
  10. class mytable(Base):
  11. __tablename__ = 'mytable'
  12. id = Column(Integer,primary_key = True)
  13. name = Column(String(50),unique = True)
  14. age = Column(Integer)
  15. birth = Column(DateTime)
  16. class_name = Column(String(50))
  17. #创建了一个名为 mytable 的类 第一行可省略 默认与类名相同
  18. Base.metadata.create_all(engine)
  19. #正式连接并且建立

下面是执行代码的控制台反馈
在这里插入图片描述

下面是服务器端,可以看到新建的表了,(打开库管理-》对象列表)
image.png

添加数据 和 更新数据

添加数据 代码

  1. DBSession = sessionmaker(bind = engine) #创建对象
  2. session = DBSession() #生成操作对象
  3. new_data = mytable(name = 'lihua', age = 10,birth = '2018-32-2',class_name = 'yinianjiyiban')
  4. session.add(new_data)
  5. session.commit() #类似于git的方案
  6. session.close()

cmd端
image.png

服务器端

image.png

更新数据

  1. DBSession = sessionmaker(bind = engine)
  2. session = DBSession()
  3. session.query(mytable).filter_by(id=1).update({mytable.age : 12}) #将id=1的age改为12
  4. session.commit()
  5. session.close()

cmd端

image.png

服务器端

image.png

查询数据

查找打印全部

  1. DBSession = sessionmaker(bind = engine)
  2. session = DBSession()
  3. get_data = session.query(mytable).all()
  4. for i in get_data:
  5. print('我的名字是:' + i.name)
  6. print('我的班级是:' + i.class_name)
  7. session.close()

多条件删选

  1. get_data = session.query(mytable).filter(mytable.id>=2,mytable.class_name=='201').first()
  2. print('我的名字是' + get_data.name)

其中filter与filter_by的区别是前者可以带表名查找
fisrt可以返回第一个 all返回所有以列表形式

当然也可以直接执行sql语法形式的 但是我困了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/579754
推荐阅读
相关标签
  

闽ICP备14008679号