蘭雅sRGB 个人笔记 https://262235.xyz
提供编程和电脑应用视频教程,工具和源代码
C, C++, Python Programming, Source Code, Video

旧Hexo博客 | Github | IP定位WebAPI | Docker Hub
编程中文文档 | 网盘分享 | 中文Linux命令

Python使用MySQL数据库,建立增加和删除数据实现,调用数据生成实用的Shell脚本

mysql.webp

Python使用MySQL数据库,建立增加和删除数据实现,调用数据生成实用的Shell脚本

python_mysql.gif

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的脚本https://262235.xyz/index.php/archives/766/

从SQLite版本修改成MySQL数据库的版本

py_mysql.png

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 数据库批量添加数据的简单方法

add.PNG

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
本原创文章自由转载,转载请注明本博来源及网址 | 当前页面:兰雅sRGB个人笔记 » Python使用MySQL数据库,建立增加和删除数据实现,调用数据生成实用的Shell脚本