Python使用MySQL数据库,建立增加和删除数据实现,调用数据生成实用的Shell脚本
MySQL 建立和操作数据库基础
1. 连接MYSQL数据库
# 连接MYSQL数据库
import mysql.connector
conn = mysql.connector.connect(
host="mysql数据库服务器",
user="user",
passwd="passwd"
)
c = conn.cursor()
2. 使用 SHOW DATABASES
语句列出系统中的所有数据库
c = conn.cursor()
c.execute("SHOW DATABASES")
for x in c:
print(x)
3. 建立 vps2021 数据库,建立数据表,添加和查询数据
# 建立 vps2021 数据库
c.execute("CREATE DATABASE vps2021")
c.execute("USE vps2021")
# Create table 建立 vps 数据表
c.execute('''CREATE TABLE vps
(ip text, port text, password text, ss_port text, info text)''')
# Insert a row of data 插入一行示例数据
c.execute('''INSERT INTO vps VALUES
('188.188.188.188', '22', 'PSWD@SSL', '443', '0号vps示例')''')
# Save (commit) the changes 保存提交数据修改
conn.commit()
# 在 MYSQL 语句中,使用 %s 占位符来代替值,然后把对应的值组成的元组做为 execute() 方法的第二个参数。
port = ('22',)
c.execute('SELECT * FROM vps WHERE port=%s', port)
print(c.fetchone())
4. 删除数据表和删除数据库操作
# 删除数据表 vps
sql = "DROP TABLE vps"
c.execute(sql)
# 在MYSQL中使用 DROP DATABASE [ IF EXISTS ] <数据库名>
sql = "DROP DATABASE IF EXISTS vps2021"
c.execute(sql)
conn.commit()
conn.close()
5. 把 Python使用SQLite数据库脚本,改写成使用 MySQL
从SQLite版本修改成MySQL数据库的版本
Python 远程操作 MySQL 数据库的源码 myvps.py
import sys, mysql.connector
# define Color
Green = '\033[32m'; Red = '\033[31m'; GreenBG = '\033[42;37m'; RedBG = '\033[41;37m'
Yellow = '\033[0;33m'; SkyBlue = '\033[0;36m'; Font = '\033[0m'
# 连接MYSQL数据库
conn = mysql.connector.connect(
host="MYSQL服务器",
user="用户",
passwd="密码"
)
c = conn.cursor()
c.execute("USE vps2022")
# sql 获取 vps 数据 , 显示 vps 数据
def display_data(c):
print(GreenBG, ":: 显示 MySQL 数据库 vps2022 中获节点表 ")
sql = 'SELECT * FROM vps ORDER BY ip'
c.execute(sql)
vps = c.fetchall()
cnt=0 ; sk = list()
for row in vps:
print(SkyBlue, cnt,'节点:', Yellow, row)
sk.append(list(row))
cnt+=1
print(Font)
return sk
vps = display_data(c)
print(SkyBlue, ":: 使用节点直接输入节点号数字 ")
print(GreenBG, ":: 输入命令:", RedBG, "del <1> 删除节点 \n :: 添加节点:", SkyBlue, 'add <ip port passwd ss_port info>', Font)
print(' $ ', end='')
cmd = input().strip()
cmd = cmd.replace(',', ' ').replace('\'', '')
arg = cmd.split()
# print(arg)
if (len(arg)==0):
sys.exit(1)
# 命令 del <1> 删除节点
if arg[0] == 'del' :
id = int(arg[1])
row = vps[id]
c.execute("DELETE FROM vps WHERE ip=%s AND port=%s ", (row[0], row[1]) )
conn.commit()
print('\n'); display_data(c)
sys.exit(0)
# 命令 add <ip port passwd ss_port info> 添加节点
if arg[0] == 'add' and len(arg)==6:
row =(arg[1], arg[2], arg[3], arg[4], arg[5])
c.execute('INSERT INTO vps VALUES (%s,%s,%s,%s,%s)', row)
conn.commit()
print('\n'); display_data(c)
sys.exit(0)
text = '''
# text 字符串填充你实际用到的shell脚本内容
'''
def make_sskcp(sk, id):
cfg = sk[id]
str = '#!/bin/bash\n\n'
str += 'SERVER_IP=' + cfg[0] + '\nPORT=' + cfg[1] + '\nPASSWORD=' + cfg[2] + '\nSS_PORT=40000\nSOCKS5_PORT=1080\n'
print(str)
str += text
return str
if int(arg[0]) < len(vps) and len(arg)==1:
str = make_sskcp(vps, int(arg[0]))
f = open('sskcp.sh', 'w')
f.write(str); f.close()
# os.system('cat sskcp.sh')
sys.exit(0)
conn.close()
脚本使用添加数据时,记录信息添加可以使用下面三种间隔方式
add '111.188.188.188', '22', 'Pa55@SSL', '443', '111号NAT小鸡'
add 115.115.188.188 22 Pa55@SSL 443 115号NAT小鸡
add 118.115.188.188, 22, Pa55@SSL , 443 , 115号NAT小鸡
向 MySQL 数据库批量添加数据的简单方法
import sys, mysql.connector
Green = '\033[32m'; Red = '\033[31m'; GreenBG = '\033[42;37m'; RedBG = '\033[41;37m'; Yellow = '\033[0;33m'; SkyBlue = '\033[0;36m'; Font = '\033[0m'
# 连接MYSQL数据库
conn = mysql.connector.connect(
host="MYSQL服务器",
user="用户",
passwd="密码"
c = conn.cursor(); c.execute("USE vps2022")
# sql 获取 vps 数据 , 显示 vps 数据
def display_data(c):
print(GreenBG, ":: 显示 MySQL 数据库 vps2022 中获节点表 ")
sql = 'SELECT * FROM vps'
c.execute(sql)
cnt=0 ; sk = list()
for row in c.fetchall():
print(SkyBlue, cnt,'节点:', Yellow, row)
sk.append(list(row)); cnt+=1
display_data(c)
while True :
print(GreenBG, ":: 添加节点:", SkyBlue, 'add <ip port passwd ss_port info> ', RedBG, '保存和退出: quit', Font, '\n $ ', end='')
cmd = input().strip()
cmd = cmd.replace(',', ' ').replace('\'', '')
arg = cmd.split()
if (len(arg)==0):
continue
if arg[0] == 'add' and len(arg)==6:
row =(arg[1], arg[2], arg[3], arg[4], arg[5])
c.execute('INSERT INTO vps VALUES (%s,%s,%s,%s,%s)', row)
if arg[0] == 'quit' :
conn.commit()
display_data(c)
sys.exit(0)
# 使用命令 python3 addvps.py < iplist.txt 或者 cat iplist.txt | python3 addvps.py
# 批量输入数据 iplist.txt 格式 add 数据, 最后一行 quit
# add '111.188.188.188', '22', 'Pa55@SSL', '443', '111号NAT小鸡'
# add 115.115.188.188 22 Pa55@SSL 443 115号NAT小鸡
# add 118.115.188.188,22,Pa55@SSL,443,115号NAT小鸡
# quit