Python管理myql、搭建frp服务上线mysql数据库、Python生成可执行文件及python模块发布web服务

Day 21

复习

root@python \~\]# vim test03.py a=3 b=4 print(a+b) print(a\*\*2+b\*\*2) \[root@python \~\]# python3 test03.py 7 25 ****# 逐行调试**** \[root@python \~\]# python3 -m pdb test03.py \> /root/test03.py(1)\() -\> a=3 (Pdb) n \> /root/test03.py(2)\() -\> b=4 (Pdb) n \> /root/test03.py(3)\() -\> print(a+b) (Pdb) n 7 \> /root/test03.py(4)\() -\> print(a\*\*2+b\*\*2) (Pdb) n 25 --Return-- \> /root/test03.py(4)\()-\>None -\> print(a\*\*2+b\*\*2) (Pdb) n --Return-- \> \(1)\()-\>None (Pdb) n \[root@python \~\]# python3 \>\>\> import random \>\>\> random \ \>\>\> \[root@python \~\]# cat /usr/lib64/python3.6/random.py ****搭建frp服务上线mysql数据库**** ****# mysql-master作为服务器端对外发布**** \[root@master-mysql \~\]# cp -r frp_0.33.0_linux_amd64/ frp/ \[root@master-mysql \~\]#cd frp/ \[root@master-mysql frp\]# ls frpc frpc.ini frps_full.ini LICENSE frpc_full.ini frps frps.ini systemd \[root@master-mysql frp\]#vim frps.ini bind_port = 7000 dashboard_user=aaa dashboard_pwd=aaa dashboard_port=7500 \[root@master-mysql frp\]#firewall-cmd --zone=public --add-port=7500/tcp --permanent \[root@master-mysql frp\]#firewall-cmd --zone=public --add-port=6000-6100/tcp --permanent \[root@master-mysql frp\]#firewall-cmd --reload \[root@master-mysql frp\]#./frps -c frps.ini 2024/07/19 11:18:14 \[I\] \[service.go:178\] frps tcp listen on 0.0.0.0:7000 2024/07/19 11:18:14 \[I\] \[root.go:209\] start frps success firewall-cmd --zone=public --add-port=7000/tcp --permanent ****# 客户端的配置**** \[root@cz \~\]# ls anaconda-ks.cfg frp_0.33.0_linux_amd64.tar frp_0.33.0_linux_amd64 \[root@cz \~\]# cd frp_0.33.0_linux_amd64 \[root@cz frp_0.33.0_linux_amd64\]# ls frpc frpc.ini frps_full.ini LICENSE frpc_full.ini frps frps.ini systemd \[root@cz frp_0.33.0_linux_amd64\]# vim frpc.ini \[common

server_addr = 192.168.2.45

server_port = 7000

caizijaun

type = tcp

local_ip = 127.0.0.1

local_port = 3306

remote_port = 6029

root@cz frp_0.33.0_linux_amd64\]# ./frpc -c frpc.ini 2024/07/19 13:59:31 \[I\] \[service.go:282\] \[d82f1ce364b4ddbd\] login to server success, get run id \[d82f1ce364b4ddbd\], server udp port \[0

2024/07/19 13:59:31 [I] [proxy_manager.go:144] [d82f1ce364b4ddbd] proxy added: [caizijuan]

2024/07/19 13:59:31 [W] [control.go:177] [d82f1ce364b4ddbd] [caizijuan] start error: port already used

root@cz \~\]# firewall-cmd --zone=public --add-port=21/tcp --permanent \[root@cz \~\]# systemctl start firewalld \[root@cz \~\]# firewall-cmd --zone=public --add-port=21/tcp --permanent \[root@cz \~\]# firewall-cmd --reload ****Python管理myql**** ![](https://i-blog.csdnimg.cn/direct/a1bdd13ebeb541e5a735909f89769e5b.png) ****======**** ****Pytho**** ****n**** ****更换源的方法**** ****======**** \[root@python \~\]# pip3 install pandas ****#**** ****永久换源**** 方法一:一行命令换源 只需在命令行中输入下面这一行命令,即可永久设置pip下载源为国内源,提⾼下载和安装速度: \[root@python \~\]#pip3 config set global.index-url [Simple Index](https://pypi.tuna.tsinghua.edu.cn/simple "Simple Index") \[root@python \~\]#yum -y install sqlalchemy \[root@python \~\]#pip3 install pandas ****注意**** ****:****如果执行命令时报错 ERROR: unknown command "config" 可能是Pip版本过低,要么升级pip版本,要么使用方法二。 方法二:配置换源脚本 不管你用的是pip3还是pip,方法都是一样的(也即都是创建pip文件夹): 1)先创建文件夹,然后创建并打开文件(如果你已经有这个文件夹或者文件,那么执行下面的命令可能会报错,这无所谓,目的是有这个文件夹和文件就行) \[root@python \~\]#mkdir \~/.pip \[root@python \~\]#vim \~/.pip/pip.conf 2)在pip.conf文件中输入以下内容,然后保存退出即可。 \[global

timeout=100

index-url=https://pypi.tuna.tsinghua.edu.cn/simple/

extra-index-url= http://mirrors.aliyun.com/pypi/simple/

install

trusted-host=

pypi.tuna.tsinghua.edu.cn

mirrors.aliyun.com

=======列举 国内源列表 =====

阿里云 http://mirrors.aliyun.com/pypi/simple/

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

豆瓣 http://pypi.douban.com/simple/

Python官方 https://pypi.python.org/simple/

v2ex http://pypi.v2ex.com/simple/

中国科学院 http://pypi.mirrors.opencas.cn/simple/

清华大学 Simple Index

# 临时换源

每次都给pip进行临时换源:pip3 install -i http://pypi.douban.com/simple/ 包名

# 安装pandas数据分析工具(pandas是知名的数据分析工具,pandas有完整的读取数据的工具,以及DateFrame数据框架,⽤于保存从数据库中读取的数据)

root@python \~\]#yum -y install pymysql ****# 安装pymysql连接器(oracle为开发者提供的python管理mysql的⼯具,通过这个⼯具,就恶意在不替原有代码的情况下,应对数据库软件的升级)**** \[root@python \~\]#yum -y install pymysql Successfully installed pymysql-1.0.2 \[root@python \~\]#python3 \>\>\> import pymysql \>\>\> import pandas \>\>\> pymysql \ \>\>\> pandas \ \>\>\> import pymysql as py \>\>\> import pymysql as pm \>\>\> import pandas as pd \>\>\> pm \ \>\>\> pd \ \>\>\> conn=pm.connect( ... host='192.168.2.45', ... user='huajuan', ... password='Huajuan_123', ... database='test', ... port=6029); \>\>\> conn=pm.connect( \>\>\> conn \ \>\>\> cursor=conn.cursor() ****# 查看游标**** \>\>\> cursor \ \>\>\> sql="select \* from student" \>\>\> sql 'select \* from student' \>\>\> cursor.execute(sql) 5 \>\>\> cursor.fetchall() ((1, '花卷', '女'), (2, '张三', '男'), (3, '莎莎', '女')) \>\>\> cursor.description (('id', 3, None, 11, 11, 0, False), ('name', 253, None, 180, 180, 0, False), ('gender', 253, None, 16, 16, 0, False)) \>\>\> head=\[

>>> desc=cursor.description

>>> for var in desc:

... print(var[0])

...

id

name

gender

>>> for var in desc:

... head.append(var[0]

...

...

... )

...

>>> head

'id', 'name', 'gender'

>>> pd.DataFrame(data=cursor.fetchall(),columns=head)

Empty DataFrame

Columns: [id, name, gender]

Index: []

>>> pd.DataFrame(cursor.fetchall(),columns=head)

Empty DataFrame

Columns: [id, name, gender]

Index: []

>>> cursor.fetchall()

()

>>> cursor.execute(sql)

5

>>> res=cursor.fetchall()

>>> res

((1, '花卷', '女'), (2, '张三', '男'), (3, '莎莎', '女'))

>>> head

'id', 'name', 'gender'

>>> pd.DataFrame(data=res,columns=head)

id name gender

0 1 花卷 女

1 2 张三 男

2 3 莎莎 女

将所有操作编写成一个py文件

说明:和shell脚本⼀样python⽂件也可以称为py脚本,也是将pyhton指令做⼀个集。为了脚本更加的智能化和⾃动化,添加选择语句(智能)循环语

句(⾃动化),同时为了开发效率,可读性,做了⽅法,类,模块,

root@python \~\]#vim python_mysql.py import pandas as pd import pymysql as pm class Python_Mysql_01(object): import pymysql as pm class Python_Mysql_01(object): def __int__(self): print('test') def getConn(self): print('\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*') conn=pm.connect( host=input('sign host_ip\|name:'), user=input('sign database username:'), password=input('sign database password:'), database=input('sign database name:'), port=int(input('sign port no:') ) #print(conn) return conn def getRes(self, curror, sql): cursor.execute(sql) ****# 获得查询的数据**** data=cursor.fetchall() ****# 三目运算符,获得表头**** head=\[item\[0\] for item in cursor.description

resturn cursor.fetchall()

# 组成pandas数据框 DataFrame

return pandas.DataFrame(data=data,columns=head)

if name=="main":

# 初始化 Python_Mysql_01 类,创建实例pmp,之后所有的方法都可以在实例中调用

pmp=Python_Mysql_01()

# 获得conn

conn=pmp.getConn()

# 获得游标

cursor=conn.cursor()

print(cursor)

pmp.getConn()

Tablename=input('sign tablename')

df=pmp.getRes(cursor,'select * from'+tablename)

print(df)

root@python \~\]#python3 python_mysql.py ((1, '花卷', '女'), (2, '张三', '男'), (3, '莎莎', '女')) pip3 install pyinstaller \[root@fw \~\]# ./python_mysql \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* sign host_ip\|name:192.168.2.45 sign database username:huajuan sign database password:Huajuan_123 sign database name:test sign port no:6029 id name gender 0 1 花卷 女 1 2 张三 男 2 3 莎莎 女 \[root@python \~\]#ls \[root@python dist\]#cd dist/ python_mysql ****Python生成可执行文件**** ****说明:因为py文件要被执行需要在linux中安装python环境,但是二进制可执行文件,不要环境,在任何linux主机上都可以执行。# 安装pyinstaller**** \[root@python \~\]#pip3 insatll pyinstaller \[root@python \~\]#which pyinstaller ****# 使⽤pyinstaller生成可执行文件**** \[root@python \~\]#pyinstaller --onefile python_mysql.py 注意: py文件中必须是有 if __name__=="__main__": python_mysq ****python模块发布web服务**** \[root@python \~\]#python3 -m http.server 9000 ****能够将当前目录中所有的文件作为web服务器发布。****

相关推荐
JhonKI4 分钟前
【Linux】日志模块实现详解
linux·运维·服务器
学也不会1 小时前
Ubuntu-安装redis
linux·运维·ubuntu
小徐Chao努力3 小时前
【centos】经常使用的脚本
linux·运维·centos
rainFFrain6 小时前
日志与策略模式
linux·运维·vscode·策略模式
无情白8 小时前
k8s运维面试总结(持续更新)
运维·面试·kubernetes
H1346948909 小时前
企业服务器备份软件,企业服务器备份的方法有哪些?
运维·服务器·负载均衡
塔能物联运维11 小时前
塔能科技:精准节能,擎动工厂可持续发展巨轮
大数据·运维
小王努力学编程11 小时前
【Linux系统编程】进程概念,进程状态
linux·运维·服务器·c++
liuliu032312 小时前
戴尔笔记本 ubuntu 22.04 开机后进入initramfs界面
linux·运维·ubuntu
Android 小码峰啊13 小时前
Android Dagger 2 框架的注解模块深入剖析 (一)
android·adb·android studio·android-studio·androidx·android runtime