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)<module>()

-> a=3

(Pdb) n

> /root/test03.py(2)<module>()

-> b=4

(Pdb) n

> /root/test03.py(3)<module>()

-> print(a+b)

(Pdb) n

7

> /root/test03.py(4)<module>()

-> print(a**2+b**2)

(Pdb) n

25

--Return--

> /root/test03.py(4)<module>()->None

-> print(a**2+b**2)

(Pdb) n

--Return--

> <string>(1)<module>()->None

(Pdb) n

root@python \~# python3

>>> import random

>>> random

<module 'random' from '/usr/lib64/python3.6/random.py'>

>>>

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

====== Pytho n 更换源的方法 ======

root@python \~# pip3 install pandas

# 永久换源

方法一:一行命令换源

只需在命令行中输入下面这一行命令,即可永久设置pip下载源为国内源,提⾼下载和安装速度:

root@python \~#pip3 config set global.index-url 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

<module 'pymysql' from '/usr/local/lib/python3.6/site-packages/pymysql/init.py'>

>>> pandas

<module 'pandas' from '/usr/local/lib64/python3.6/site-packages/pandas/init.py'>

>>> import pymysql as py

>>> import pymysql as pm

>>> import pandas as pd

>>> pm

<module 'pymysql' from '/usr/local/lib/python3.6/site-packages/pymysql/init.py'>

>>> pd

<module 'pandas' from '/usr/local/lib64/python3.6/site-packages/pandas/init.py'>

>>> conn=pm.connect(

... host='192.168.2.45',

... user='huajuan',

... password='Huajuan_123',

... database='test',

... port=6029);

>>> conn=pm.connect(

>>> conn

<pymysql.connections.Connection object at 0x7faaaa7463c8>

>>> cursor=conn.cursor()

# 查看游标

>>> cursor

<pymysql.cursors.Cursor object at 0x7faaaa79bbe0>

>>> 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(var0)

...

id

name

gender

>>> for var in desc:

... head.append(var0

...

...

... )

...

>>> 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服务器发布。

相关推荐
EMTime2 小时前
Docker运行OpenWRT
运维·docker·容器
lolo大魔王2 小时前
Linux 文件系统超全面详解(原理、结构、挂载、分区、inode、日志、管理命令)
linux·运维·服务器
zyl837215 小时前
Docker 使用手册
运维·docker·容器
古月方枘Fry5 小时前
MGRE实验
运维·服务器
stolentime6 小时前
FreeDomain 本地开发环境快速搭建指南
运维·服务器·网络
bush47 小时前
嵌入式linux学习记录四
linux·运维·学习
lihao lihao8 小时前
软硬链接
linux·运维·服务器
TOWE technology8 小时前
智能安防监控系统如何做好防雷?——视频信号SPD综合应用方案解析
运维·服务器·防雷产品·信号保护·信号防雷·spd
楼田莉子8 小时前
Docker学习:Docker介绍及其架构介绍
运维·后端·学习·docker·容器·架构
大明者省9 小时前
IIS 端口绑定正常访问的原理说明与常见误区澄清
运维·服务器·笔记