(第二十五天)

mysql 下载路径:
https://dev.mysql.com/downloads/
[ root @ 2 ~ ] # vim py001.py
a = 3
b = 4
print ( a + b )
print ( a ** 2 + b ** 2 )
[ root @ 2 ~ ] # python py001.py
7
25
[ root @ 2 ~ ] # python3
>>> import random
>>> random
< module 'random' from '/usr/lib64/python3.6/random.py' >
>>> quit ()
[ root @ 2 ~ ] # vim /usr/lib64/python3.6/random.py
上午
1 、通过 frp 内网穿透共享数据库信息
[root@1 ~] # mysql -p' 密码 '
mysql> create user 'li' @ '%' identified by '1' ;
mysql> create database test;
mysql> grant all on test.* to 'li' ;
[root@1 ~] # tar -xf frp_0.33.0_linux_amd64.tar.gz
[root@1 ~] # cd frp_0.33.0_linux_amd64/
[root@1 frp_0.33.0_linux_amd64] # vim frpc.ini
[common]
server_addr = 123 .249.27.70
server_port = 7000
token = 15773141955
[mysql]
type = tcp
local_ip = 127 .0.0.1
local_port = 3306
remote_port = 6000
[root@1 frp_0.33.0_linux_amd64] # ./frpc -c frpc.ini
访问公网 ip 7500 端口,查看控制面板
在数据库连接工具上,使用公网 ip 与自己规定的端口号访问数据库
test 数据库具有所有权限
2 、在 python 中连接数据库并结合游标对数据库进行操作
前提:要有 python3 环境
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple // 设置 pip3 的全
局配置,将默认的 Python 包索引源( index-url )修改为清华大学的镜像源
https://pypi.tuna.tsinghua.edu.cn/simple
上面命令执行失败:执行该命令 [root@2 ~]# python3 -m pip install --upgrade pip
1 、设置清华镜像站(从国内下载安装包,提高下载和安装工具速度)
2 、安装 pandas 数据分析工具( pandas 是知名的数据分析工具, pandas 有完整的读取数据的工具,
以及 DateFrame 数据框架,用于保存从数据库中读取的数据)
3 、安装 pymysql 连接器( oracle 为开发者提供的 python 管理 mysql 的工具,通过这个工具,就可以
在不替换原有代码的情况下,应对数据库软件的升级)
[ root @2 ~ ] # python3 -m pip install --upgrade pip # pip 工具升级到最新版本
[ root @2 ~ ] # pip3 config set global.index-url
https://pypi.tuna.tsinghua.edu.cn/simple # 设置 pip3 的全局配置
[ root @2 ~ ] # pip3 install pandas # 安装 Python pandas
[ root @2 ~ ] # pip3 install pymysql # 用于安装 pymysql
[ root @2 ~ ] # python3
>>> import pymysql as py # 以别名 py 导入 pymysql 库,可以使用更简洁的别名 py 来调用
pymysql 库中的函数和方法
>>> import pandas as pd # 以别名 py 导入 pandas
>>> py # 表示 Python 成功识别了导入的 pymysql 库,并能够展示关于这个模块的一些基本信
息,包括它的位置
< module 'pymysql' from '/usr/local/lib/python3.6/site
packages/pymysql/__init__.py' >
>>> pd # 表示 Python 成功识别了导入的 pandas
< module 'pandas' from '/usr/local/lib64/python3.6/site
packages/pandas/__init__.py' >
>>> conn = py .connect ( # 使用 pymysql 库建立了一个到指定 MySQL 数据库的连接,变量 conn
功保存了这个数据库连接,可以通过它进行后续的数据操作
... host = '123.249.27.70' ,
... user = 'abcd' ,
... password = 'abcd' ,
... database = 'test' ,
... port = 6001 ) ;
>>> conn # 表明您成功创建了一个与 MySQL 数据库的连接对象 conn 0x7f529dda29b0 是这个连
接对象在内存中的地址
< pymysql .connections.Connection object at 0x7f529dda29b0 >
>>> cursor = conn .cursor () # 创建一个游标对象 cursor
>>> cursor
< pymysql .cursors.Cursor object at 0x7f52b7ade710 >
>>> sql = "select * from student" # 定义了一个 SQL 查询语句
>>> sql
'select * from student'
>>> cursor .execute ( sql ) # 将您定义的 SQL 语句 select * from student 发送到数据库服务器
执行
5 # 查询的结果会被存储在游标内部,您可以通过后续的操作来获取和处理这些结果
>>> cursor .fetchall () # 获取所有的查询结果,以元组的形式返回一个包含所有行数据的列表
(( 1 , ' 章三 ' , ' ' ) , ( 2 , ' 李四 ' , ' ' ) , ( 3 , ' 小凤仙 ' , ' ' ) , ( 4 , ' 章丘铁锅 ' , ' ' ) ,
( 6 , ' 孙颖莎 ' , ' ' ))
>>> cursor .description # 返回一个描述结果集中列的元组序列,通常包括列名、数据类型、显
示大小、内部大小、精度、小数位数和是否可为空等
(( 'id' , 3 , None, 11 , 11 , 0 , False ) , ( 'name' , 253 , None, 180 , 180 , 0 , False ) ,
( 'gender' , 253 , None, 16 , 16 , 0 , False ))
>>> res = cursor .fetchall ()
>>> res
(( 1 , ' 章三 ' , ' ' ) , ( 2 , ' 李四 ' , ' ' ) , ( 3 , ' 小凤仙 ' , ' ' ) , ( 4 , ' 章丘铁锅 ' , ' ' ) ,
( 6 , ' 孙颖莎 ' , ' ' ))
>>> head = [] # 创建一个 head 列表
>>> desc = cursor .description
>>> for var in desc :
... print ( var )
...
( 'id' , 3 , None, 11 , 11 , 0 , False )
( 'name' , 253 , None, 180 , 180 , 0 , False )
( 'gender' , 253 , None, 16 , 16 , 0 , False )
>>> 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 = res, columns = head ) # 使用了 pandas 库创建了一个 DataFrame
data=res 表示数据内容, columns=head 指定了列名
id name gender
0 1 章三 男
1 2 李四 女
2 3 小凤仙 女
3 4 章丘铁锅 男
4 6 孙颖莎 女
下午
1 、制作 python 脚本操作数据库
[ root @ 2 ~ ] # vim python_mysql.py
import pymysql as pm
import pandas
class Python_Mysql_01 ( object ): # 定义了一个名为 Python_Mysql_01 的类,用于与
MySQL 数据库进行交互并将查询结果转换为 pandas DataFrame
def __init__ ( self ): # 类的初始化方法,用于标识类的实例化操作
print ( "test" )
def getConn ( self ): # 用于建立与指定 MySQL 数据库的连接,并返回连接对象 conn
conn = pm . connect (
host = '123.249.27.70' ,
user = 'abcd' ,
password = 'abcd' ,
database = 'test' ,
port = 6001
)
# print(conn)
return conn
def getRes ( self , cursor , sql ): # 接收一个游标对象 cursor 和一个 SQL 语句 sql
。执行 SQL 语句并获取查询结果 data ,提取表头信息 head ,然后将结果和表头组成 DataFrame
返回
cursor . execute ( sql )
# 获得查询的数据
data = cursor . fetchall ()
# 表头
head = [ item [ 0 ] for item in cursor . description ]
# 组成 pandas 数据框 DataFrame
return pandas . DataFrame ( data = data , columns = head )
if __name__ == "__main__" :
# 初始化 Python_Mysql_01 类,创建实例, pmp ,之后所有的方法都可以在实例中 > 调用
pmp = Python_Mysql_01 () # 实例化 Python_Mysql_01 类为 pmp
# 获得 conn
conn = pmp . getConn () # 通过 pmp 调用 getConn 方法获取数据库连接 conn
# 获得游标
cursor = conn . cursor () # conn 获取游标 cursor
# print(cursor)
df = pmp . getRes ( cursor , "select * from student" )
print ( df ) # 调用 pmp getRes 方法执行 select * from student
语句,并将结果存储在 df 中,最后打印 df
[ root @ 2 ~ ] # python3 python_mysql.py
test
id name gender
0 1 章三 男
1 2 李四 女
2 3 小凤仙 女
3 4 章丘铁锅 男
4 6 孙颖莎 女
2 、总结
1 )和 shell 脚本一样 python 文件也可以称为 py 脚本,也是将 python 指令做一个集合
2 )为了脚本更加的智能化和自动化,添加选择语句(智能)循环语句(自动化)
3 )同时为了开发效率,可读性,做了方法,类,模块
3 、修改脚本(添加 input 语句)
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" ))
)
......
tablename = input ( "sign tablename" )
df = pmp . getRes ( cursor , "select * from " + tablename )
[ root @ 2 ~ ] # python3 python_mysql.py
test
sign host_ip | name : 123.249.27.70
sign database username : abcd
sign database password : abcd
sign database name : test
sign port no 6001
sign tablenamestudent
id name gender
0 1 章三 男
1 2 李四 女
2 3 小凤仙 女
3 4 章丘铁锅 男
4 6 孙颖莎 女
4 、打包脚本生成可执行文件
pyinstaller --onefile python_mysql.py
--onefile 选项表示将所有的依赖和代码打包到一个单独的文件中,这样生成的可执行文件更便于
分发和使用。
完成打包后,会在当前目录的 dist 文件夹中找到生成的可执行文件。可以将这个可执行文件拷贝
到其他机器上(即使该机器没有安装 Python 环境)运行。
[ root @ 2 ~ ] # pip3 install pyinstaller # 安装 PyInstaller 库,用于将 Python 程序
打包成可执行文件
[ root @ 2 ~ ] # which pyinstaller # 在系统的环境变量路径中查找 pyinstaller 可执行文件
的位置
[ root @ 2 ~ ] # pyinstaller --onefile python_mysql.py # 使用 PyInstaller 将名为
python_mysql.py Python 脚本打包成一个独立的可执行文件
[ root @ 2 ~ ] # ls
anaconda - ks . cfg dist __pycache__ python_mysql . py v
build py001 . py python_mysql_01 . spec python_mysql . spec
[ root @ 2 ~ ] # cd dist/
[ root @ 2 dist ] # ls
python_mysql
[ root @ 2 dist ] # ./python_mysql
test
sign host_ip | name : 123.249.27.70
sign database username : abcd
sign database password : abcd
sign database name : test
sign port no : 6001
sign tablename : student
id name gender
0 1 章三 男
1 2 李四 女
2 3 小凤仙 女
3 4 章丘铁锅 男
4 6 孙颖莎 女
[ root @ 2 ~ ] # python3 -m http.server 8000 # 会在当前目录下启动一个简单的 HTTP 服务
器,监听端口 8000
[ root @ 2 ~ ] # nohup python3 -m http.server 8000& # 将执行放入后台
[ 1 ] 12237
[ root @ 2 ~ ] # nohup: 忽略输入并把输出追加到 "nohup.out"
# 浏览器访问 ip 加端口号
5 、总结
1 python 脚本完成并配置成功之后,将脚本部署为一个二进制的可执行文件
2 )因为 py 文件要被执行需要在 linux 中安装 python 环境
3 )但是二进制可执行文件,不要环境,在任何 linux 主机上都可以执行
4 )步骤
安装 pyinstaller
pip3 install pyinstaller
使用 pyinstaller 生成可执行文件
pyinstaller -- onefile xxx . py
# py 文件中必须是有 if __name__=="__main__";
# xxxx
python 模块发布 web 服务
python3 - m http . server 9971
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值