• 通过python管理MySQL


    a
    内⽹主机 不可以被⽹络访问
    b
    外⽹主机 可以被外⽹通过ip或者域名访问
    使⽤b代理a主机,通过访问b主机管理a主机
    访问b主机的特定端⼝,管理a主机的22端⼝
    现在我们说b为服务端,提供代理服务
    a主机是客户端,被代理了
    服务端
    开启端⼝
    1. # 打开控制台⾯板端⼝
    2. [root@hcss-ecs-e083 ~]# firewall-cmd --zone=public
    3. --add-port=7500/tcp --permanent
    4. # 打开frp服务端⼝
    5. [root@hcss-ecs-e083 ~]# firewall-cmd --zone=public
    6. --add-port=7000/tcp --permanent
    7. # 打开⼀组客户端⼝
    8. [root@hcss-ecs-e083 ~]# firewall-cmd --zone=public
    9. --add-port=6000-6100/tcp --permanent
    10. # 加载防⽕墙更新
    11. [root@hcss-ecs-e083 ~]# firewall-cmd --reload
    ⽂件
    1. [root@hcss-ecs-e083 ~]# ls -l
    2. frp_0.33.0_linux_amd64/frps*
    3. -rwxrwxr-x 1 yuanyu yuanyu 12976128 Apr 27 2020
    4. frp_0.33.0_linux_amd64/frps
    5. -rw-rw-r-- 1 yuanyu yuanyu 4639 Apr 27 2020
    6. frp_0.33.0_linux_amd64/frps_full.ini
    7. -rw-rw-r-- 1 yuanyu yuanyu 114 Jul 18 21:41
    8. frp_0.33.0_linux_amd64/frps.ini
    配置⽂件
    1. [root@hcss-ecs-e083 ~]# vim
    2. ~/frp_0.33.0_linux_amd64/frps.ini
    3. ---------------------------------------------------
    4. -----------
    5. # 服务名称
    6. [common]
    7. # 服务端⼝
    8. bind_port = 7000
    9. # 控制台⾯板账号
    10. dashboard_user=xxxxxx
    11. # 控制台密码
    12. dashboard_pwd=xxxxxxx
    13. # 控制台端⼝
    14. dashboard_port=7500
    15. # 代理标识
    16. token=xxxxxxxx
    客户端
    ⽂件
    1. [root@hcss-ecs-e083 ~]# ls -l
    2. frp_0.33.0_linux_amd64/frpc*
    3. -rwxrwxr-x 1 yuanyu yuanyu 10629120 Apr 27 2020
    4. frp_0.33.0_linux_amd64/frpc
    5. -rw-rw-r-- 1 yuanyu yuanyu 7575 Apr 27 2020
    6. frp_0.33.0_linux_amd64/frpc_full.ini
    7. -rw-rw-r-- 1 yuanyu yuanyu 126 Apr 27 2020
    8. frp_0.33.0_linux_amd64/frpc.ini
    配置⽂件
    1. # 服务器名称
    2. [common]
    3. # 服务器ip
    4. server_addr = x.x.x.x
    5. # 服务器端⼝
    6. server_port = 7000
    7. # 代理标识
    8. token=xxxxxxx
    9. # 被代理的主机名称,不允许和其他重复
    10. [被代理主机名称xxx]
    11. # 代理服务类型
    12. type = tcp
    13. # 本地ip
    14. local_ip = 127.0.0.1
    15. # 本地被代理的端⼝
    16. local_port = 22
    17. # 选择代理后的端⼝
    18. remote_port = ⾃选端⼝xxxxxxx60000
    1.⽅法⼀
    1. pip3 config set global.index-url
    2. https://pypi.tuna.tsinghua.edu.cn/simple
    3. yum -y install sqlalchemy
    4. pip3 install pandas
    5. import pandas as pd
    6. from sqlalchemy import create_engine
    7. class Python_Mysql(object):
    8. def __init__(self):
    9. print("test")
    10. def getEngine(seft):
    11. host=input("sign mysql server
    12. host:")
    13. username=input("sign mysql
    14. username:")
    15. password=input("sign mysql
    16. password:")
    17. databasename=input("sign database
    18. name:")
    19. port=input("sign mysql port:")
    20. engine=create_engine(f"mysql+pymysql://{username}:
    21. {password}@{host}:{port}/{databasename}")
    22. return engine
    23. def querySql(self,conn):
    24. sql=input("sign your sql:")
    25. return
    26. pd.read_sql(sql=sql,con=conn)
    27. if __name__=="__main__":
    28. demo=Python_Mysql()
    29. #sql=input("sign sql:")
    30. # sql="select * from user"
    31. rs=demo.querySql(demo.getEngine())
    32. print(rs)
    2.⽅法⼆
    1. 设置清华镜像站(从国内下载安装包,提⾼下载和安装速度)
    2. 安装pandas数据分析⼯具(pandas是知名的数据分析⼯具,pandas有完整的读取数据的⼯具,以及DateFrame数据框架,⽤于保存从数据库中读取的数据)
    3. 安装pymysql连接器(oracle为开发者提供的python管理mysql的⼯具,通过这个⼯具,就恶意在不替原有代码的情况下,应对数据库软件的升级)
    1. pip3 config set global.index-url
    2. https://pypi.tuna.tsinghua.edu.cn/simple
    3. yum -y install pandas
    4. yum -y install pymysql
    5. >>> import pandas as pd
    6. >>> import pymysql
    7. >>> conn=pymysql.connect(
    8. ... host='10.1.1.100',
    9. ... user='zhangmin',
    10. ... password='zhangmin',
    11. ... database='test',
    12. ... port=3306
    13. ... )
    14. >>> conn
    15. <pymysql.connections.Connection object at
    16. 0x7f9e24ba2c88>
    17. >>> cursor=conn.cursor()
    18. >>> cursor
    19. <pymysql.cursors.Cursor object at 0x7f9e24ba2668>
    20. >>> sql="select * from user"
    21. >>> cursor.excute(sql)
    22. Traceback (most recent call last):
    23. File "", line 1, in <module>
    24. AttributeError: 'Cursor' object has no attribute
    25. 'excute'
    26. >>> cursor.execute(sql)
    27. 3
    28. >>> cursor.description
    29. (('id', 3, None, 11, 11, 0, False), ('username',
    30. 253, None, 180, 180, 0, False), ('password', 253,
    31. None, 180, 180, 0, False))
    32. >>> desc=cursor.description
    33. >>> res
    34. 3
    35. >>> res=cursor.fetchall()
    36. >>> res
    37. ((1, 'aaa', '123'), (8, 'baba', 'pipi'), (20,
    38. 'aaaaaaaa', 'bbbbbbbb'))
    39. >>> desc
    40. (('id', 3, None, 11, 11, 0, False), ('username',
    41. 253, None, 180, 180, 0, False), ('password', 253,
    42. None, 180, 180, 0, False))
    43. >>> [item[0] for item in desc]
    44. ['id', 'username', 'password']
    45. >>> col=[item[0] for item in desc]
    46. >>> df=pd.DataFrame(res,columns=col)
    47. >>> df
    48. id username password
    49. 0 1 aaa 123
    50. 1 8 baba pipi
    51. 2 20 aaaaaaaa bbbbbbbb
    总结
    1. 和shell脚本⼀样python⽂件也可以称为py脚本,也是将pyhton指令做⼀个集合
    2. 为了脚本更加的智能化和⾃动化,添加选择语句(智能)循环语句(⾃动化)
    3. 同时为了开发效率,可读性,做了⽅法,类,模块,

  • 相关阅读:
    【剑指offer-牛客网刷题】第一篇-斐波拉契数列-C实现
    设计模式系列详解 -- 对象池模式&解释器模式
    IDEA启动报错Failed to create JVM. JVM path的解决办法
    LeetCode[145]二叉树的后序遍历
    根据消息信息如何快速定位程序
    3D激光线轮廓传感器市场需求,预计2029年将达到734.86百万美元。
    互联网时代的文学复兴:中文诗词大数据分析 | 开源日报 No.170
    Linux进阶-Shell编程
    电商平台和短视频平台在直播带货中有哪些差异
    Gitlab部署流程
  • 原文地址:https://blog.csdn.net/2301_76858161/article/details/141065105