吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 894|回复: 6
收起左侧

[Python] 使用sql数据表保存脚本代码文件,Python脚本从数据库里上传和下载代码文件

[复制链接]
sRGB 发表于 2021-12-12 16:30

学习Python脚本和SQL数据库使用,为了保持多设备代码的版本同步,折腾把脚本代码保存到SQL数据表中。
方便一起备份,用到方便更新,也可以再写个批量插入文件和更新文件脚本,网页端读取使用。
可以使用图形工具软件,连数据库建立表
[SQL] 纯文本查看 复制代码
表 vps2022.text 结构
CREATE TABLE IF NOT EXISTS `text` (
  `name` text,
  `text` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


相关代码开源网址:  https://github.com/hongwenjun/vps_setup/tree/remove/mysql

获取sql数据表 text 中所有脚本文件的代码


[Python] 纯文本查看 复制代码
# getsh.py

import mysql.connector
conn = mysql.connector.connect(
  host="127.0.0.1",
  user="user",
  passwd="passwd"  )
c = conn.cursor()
c.execute("USE vps2022")

sql = 'SELECT * FROM text ORDER BY name'
c.execute(sql)
text = c.fetchall()

def makefile(file, str):
  f = open(file, 'w')
  f.write(str); f.close()

for i in range(len(text)):
  file=text[i][0]
  file_str = text[i][3]
  makefile(file, file_str)
  print(file, "\t保存完成!")

conn.close()


选择下载一个文件 getfile.py


[Python] 纯文本查看 复制代码
import mysql.connector
conn = mysql.connector.connect(
    host="127.0.0.1",
    user="user",  passwd="pswd",
    database="vps2022",  buffered = True  )
c = conn.cursor()

sql = 'SELECT name FROM text'
c.execute(sql)
names = c.fetchall()

# 显示所有文件名,以供下载
for i in range(len(names)):
    print(names[i][0], end='  ')

print('\n:: 选择一个文件下载,输入文件名: ', end='')
name = input().strip()

sql = 'SELECT * FROM text WHERE name="' + name +'"'
c.execute(sql)
text = c.fetchall()

def makefile(file, str):
    f = open(file, 'w')
    f.write(str); f.close()

for i in range(len(text)):
    file=text[i][0]
    file_str = text[i][5]
    makefile(file, file_str)
    print(file, "\t保存完成!")

conn.close()


使用 addfile.py 可以批量上传文件到数据库中

[Python] 纯文本查看 复制代码
import sys, glob
import mysql.connector
conn = mysql.connector.connect(
    host="127.0.0.1",
    user="user",  passwd="passwd",
    database="vps2022",  buffered = True  )
c = conn.cursor()

files = [] 
for f in sys.argv[1:]:
    files = files + glob.glob(f)

def readfile(file):
    f = open(file, 'r')
    str = f.read(); f.close()
    return str

for file in files:
    file_str = readfile(file)
    row =(file, file_str)
    
    c.execute("DELETE FROM text WHERE name=%s ", (file,) )
    c.execute('INSERT INTO text VALUES (%s,%s)', row)
    print("FontName: " + file + "   ....OK")

conn.commit()
conn.close()

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

PpaPingggg 发表于 2021-12-12 16:34
可以很方便
五月何欢 发表于 2021-12-12 20:56
密码和用户名不能用明文必须加密。。否则就python这种特性  简直就是灾难。
Forgo7ten2020 发表于 2021-12-12 21:29
 楼主| sRGB 发表于 2021-12-13 08:14
Forgo7ten2020 发表于 2021-12-12 21:29
建议了解下git,挺好用的

git 用了快10年了,但是想下载一个单独的代码还是稍微麻烦点。
有时还会被墙拦住。
使用限制的sql数据库,可以学习,保存私密代码和配置,当作git 私密代码的补充和备份
Forgo7ten2020 发表于 2021-12-13 11:52
sRGB 发表于 2021-12-13 08:14
git 用了快10年了,但是想下载一个单独的代码还是稍微麻烦点。
有时还会被墙拦住。
使用限制的sql数据 ...

如果是单独代码文件的话,gist也蛮好用
13200 发表于 2022-1-8 19:18
sRGB 发表于 2021-12-13 08:14
git 用了快10年了,但是想下载一个单独的代码还是稍微麻烦点。
有时还会被墙拦住。
使用限制的sql数据 ...

可以试试自己搭建一个git服务器
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2022-5-18 23:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表