当前位置: 首页 > news >正文

网站打不开 别的电脑能打开蓝色大气网站源码

网站打不开 别的电脑能打开,蓝色大气网站源码,手机asp网站开发工具,网站平台规划方案前面的章节中学习了使用 Python 读写文件的方法#xff0c;大家可以用文件方式来存放数据#xff0c;不过使用文件方式时不容易管理#xff0c;同时还容易丢失#xff0c;会带来许多问题。目前主流的方法都是采用数据库软件#xff0c;通过数据库软件来组织和存放数据大家可以用文件方式来存放数据不过使用文件方式时不容易管理同时还容易丢失会带来许多问题。目前主流的方法都是采用数据库软件通过数据库软件来组织和存放数据不管是读还是存都非常方便速度也有保障。本篇介绍 python 操作 MySQL 数据库软件的方法。 一、Python操作数据库简介 数据库(Database)是按照数据结构来组织、存储和管理建立在计算机存储设备上的数据仓库。MySQL是一个关系型数据库管理系统由瑞典 MySQL AB 公司开发。MySQL 是一个可移植的数据库几乎能在当前所有的操作系统上运行如 Unix/Linux、windows、Mac 和 Solaris。MySOL 采用标准的 SOL 语言(结构化查询语言)SQL 是一种数据库査询和程序设计语言用于存取数据以及查询、更新和管理关系数据库系统。         虽然 Python 可以支持数据的本地存储但前提是先从数据库获取才能保存下来同时还无法存储过多的数据因为数据释放和使用会占用较大的内存数据库负责把磁盘数据组织好放回内存Python负责在内存中操作数据。 二、PyMySQL PyMySQL 是 Python 中操作 MySQL 的模块其使用方法和 MySQLdb 几乎相同。但目前 PyMySQL支持 Python3.x而 MySQLdb 不支持 3.x 版本。         本章节我们来学习 PyMySQL 模块对数据库的操作以及利用 python 脚本实现 mysql 的备份和还原。 1.设备清单 2.在 python 主机安装 pymysql 模块 通过 pip 安装 PyMySQL 的命令: [rootlocalhost ~]# pip3 install pymysql 3.数据库主机安装 mariadb [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# yum -y install mariadb-server [rootlocalhost ~]# systemctl start mariadb [rootlocalhost ~]# mysqladmin -uroot password 123456 [rootlocalhost ~]# mysql -uroot -p123456 MariaDB [(none)] grant all on *.* to root% identified by 123456; 4.在 mariadb01 上创建数据库  MariaDB [(none)] use test; Database changed MariaDB [test] CREATE TABLE users (id int(11) NOT NULL AUTO_INCREMENT,email varchar(255), password varchar(255), PRIMARY KEY(id)); 5.pymysql使用 在前面的课程中已经详细的介绍过了 MySQL 的安装及配置过程在本章将不做过多阐述。现在我们安装一个 Mariadb 数据库并登录 Mariadb 实例在 test 库中创建一张 users 表root 帐户密码为“123456”代码如下。 示例 1:使用 PyMySOL 模块连接 MySOL 数据库向 user 表插入一条记录并査询这条记录: [rootlocalhost ~]# vim pymysql-1.py import pymysql connectionpymysql.connect(host192.168.10.102, userroot, password123456, dbtest, charsetutf8mb4, cursorclasspymysql.cursors.DictCursor) try:with connection.cursor() as cursor:sql insert into users (email,password) values(%s,%s)cursor.execute(sql,(zhangsanqq.com,pwd123))connection.commit()with connection.cursor() as cursor:sql select id,password from users where email%scursor.execute(sql,(zhangsanqq.com))result cursor.fetchone()print(result) finally:connection.close() [rootlocalhost ~]# python3 pymysql-1.py {id: 1, password: pwd123} [rootlocalhost ~]# mysql -uroot -p123456 MariaDB [(none)] use test; MariaDB [test] select * from users; ------------------------------- | id | email | password | ------------------------------- | 1 | zhangsanqq.com | pwd123 | ------------------------------- 1 row in set (0.00 sec) 从代码的执行结果中可以看到数据库表中已经成功插入了一条记录。         代码说明:先创建一个连接对象下面是一个异常处理。如果连接成功执行INSERT 语句并提交再执行 SELECT 语句获取査询的第一条记录并打印;finally 是最终执行关闭连接。在上面示例中用到了 pymysql.connect()函数还有游标对象 cursor下面具体看下它们的用法。 表 7-1 是 pymysql.connect()函数的常用参数。 表 7-1 pymysql.connect()函数的常用参数 参数描述host数据库主机地址user数据库账户passwd账户密码db使用的数据库port数据库主机端口默认 3306connect timeout连接超时时间默认10单位秒charset使用的字符集cursorclass自定义游标使用的类。上面示例用的是字典类以字典形式返回结果默认是元组形式 表7-2是pymysq1 连接对象常用方法。 表 7-2 pymysql 连接对象常用方法 方法描述commit()提交事务。对支持事务的数据库和表如果提交修改操作不适用这个方法则不会写到数据库中rollback()事务回滚。对支持事务的数据库和表如果执行此方法则回滚当前事务放弃之前的操作。cursor([cursorclass])创建一个游标对象。所有的 sql 语句的执行都要在游标对象下进行 表 7-3 是游标对象常用方法。 表 7-3 游标对象常用方法 方法方法close()关闭游标execute(sql)执行 sql 语句excutemany(sql)执行多条 sql 语句fetchone()从执行结果中取第一条记录fetchmany(n)从执行结果中取 n 条记录fetchall()从执行结果中取所有记录 6.数据库增删改查 了解了 pymysql 基本用法现在使用上面的这些方法实现数据库的增、删、改、查功 能。 (1)增加记录 示例 2:在 user 表里再添加一条记录。 import pymysql connection pymysql.connect(hostlocalhost,userroot, password123456,》dbtest,charsetutf8mb4cursorclasspymysql.cursors.DictCursor) cursorconnection.cursor( sqlinsert into users(email,password)values(lisigq.com,pwd123) cursor.execute(sql) connection.commit() connection.close() (2)查询记录 示例 3:查询 users 表记录 import pymysqlconnectionpymysql.connect(hostlocalhost,userroot,password123456,dbtest) cursorconnection.cursor() sqlSELECT id,email, password FROM users cursor.execute(sq1) 5 cursor.fetchone()# 获取第一条记录 cursor.fetchmany(2)#获取前两条记录 cursor.execute(sql) cursor.fetchall()#获取所有记录 cursor.execute(sql) cursor.fetchall()[3]#查看第四条记录 connection.close() (3)修改记录 修改用户密码 import pymysqlconnectionpymysql.connect(hostlocalhost,userroot,password123456,dbtest) cursorconnection.cursor() sql UPDATE users SET password456789WHERE emaillisiqq.com, cursor.execute(sql) 1 connection.commit() sqlSELECT id,email,password FROM users cursor.execute(sq1)#执行sql语句 5 cursor.fetchmany(2) #显示前两个记录 (4)删除记录 删除用户信息 sql DELETE FROM users WHERE emaillisigq.comcursor.execute(sql) 1connection.commit() sqlSELECT id, password FROM users WHERE email%s cursor.execute(sql,(zhangsanqq.com,)) cursor.execute(sql,(lisiqq.com,)) 0 sq1 SELECT id,email,password FROM users cursor.execute(sql) 4cursor.fetchall() 7.遍历查询结果 例 6:查询 user 表所有 email 与密码   [rootlocalhost ~]# cat pymysql-2.py#!/usr/local/bin/python3.6 import pymysq1 connection pymysql.connect(hostlocalhost,userroot, password123456,dbtest,charsetutf8mb4,cursorclasspymysql.cursors.DictCursor)try :with connection.cursor()as cursor:sql SELECT id,email,password FROM userscursor.execute(sql)result cursor.fetchall()for dict in result:print(email:%s,password:%s%(dict[email],dict[password])) finally:connection.close() [rootlocalhost ~]# python3 pymysql-2.py email:user1python.org,password:456789 email:user2python.org,password:123456 email:user3python.org,password:123456 email:user4python.org,password:123456 三、案例实战--Python 脚本周期性备份 MySQL 数据库 如果要对当前服务器上的数据库进行备份从 MySQL 导出数据需要用到 mysqldump 工具,备份全部数据库数据到一个 sq1 文件包括 mysq1、sys、information schema.performance schema 等内置数据库。无论是否使用 Python 脚本执行数据库备份都需要使用mysqldump 具。 本例服务器的 MySQL 连接信息如下: host: 192.168.10.102 port:3306 user: root password:123456 1.使用 mysqldump 命令一键备份 mysql 数据库 执行命令如下: [rootlocalhost ~]# mysqldump -h 192.168.9.167 -uroot -p 123456 -A backup mysql.sql 不用编写 Python 脚本即可一条命令备份 mysq1 数据库,那么编写 Python 脚本备份数据库不是多此一举么?如果是备份全部数据直接使用命令确实很方便但是在企业生产环境中备份的方式要灵活很多。例如只需要把每个数据库单独备份成一个 sq1 文件并都保存在同一个目录下面。就需要手动执行很多条命令此时使用 Python 脚本实现就非常简单方便了。 2.写 Python 脚本文件 backup mysql.py 使用 Python 编写数据库备份脚本 backup mysql.py 文件代码如下: import datetime import os importsubprocess import time import logging import pymysql # Set log format logging.basicconfig(format%(asctime)s-%(pathname)s[line:%(lineno)d] -%(levelname)s:%(message)s,levellogging.INFO) # MySOL database details to which backup to be done. Make sure below user having enoughprivileges to take databases backup. # 数据库主机地址 MYSOL HOST 192.168.10.102 # MySQL 数据库用户名MYSOL USERNAME root 井 MYSOL PORT 3306 # 数据库密码 MYSOL PASSWORD123456 # 需要备份的数据库名称 # DB NAME main #排除不进行备份操作的数据库名称集合 DISABLED DATABASEs {information schema, mysql, performance_schema, sys} #备份文件存放路径 BACKUP PATH /backup/mysql/ # Getting current datetime to create seprate backup folder.DATETIME datetime.datetime.now().strftime(%%m%d%H%M%S) TODAYBACKUPPATH BACKUP PATH MYSOL HOST / DATETIME# 备份保留时长 DAY 3 defmkdir if not exists(path):判断备份目录是否存在不存在则创建Args :path:带创建目录名称if not os.path.exists(path):os.makedirs(path) logging.info(creating backup folder) def create mysql conn(dbmysql): 创建并返回一个 MySQL 数据库连接Args :db:要连接的数据库名称conn pymysql.connect(hostMYSOL HOST, pOrtMYSOL PORT, USerMYSOL USERNAMEpasswordMYSOL PASSWORD,dbmysql)return conndef read all databases():从数据库中读取全部数据库名称:return:数据库名称 listlogging.info(读取全部数据库名称)conn create mysql conn()cursor conn.cursor()#查询服务器上有哪些数据库cursor.execute(show databases)res cursor.fetchall()databases fitem[0lfor item in res}# 排除掉指定不备份的数据库databaseslist(databases-DISABLED DATABASES)cursor.close()conn.close()logging.info(读取数据库完毕数据库列表如下:{}.format(databases))return databasesdef backup database(database):备份指定数据库的数据和结构Args :database:待备份的数据库名称logging.info(开始备份数据库{}....format(database))# 通过调用mysqldump 完成指定数据库的备份commandmysqldump -h%s -u%s-p%s%s%s/%s.sq1%(MYSOL HOST, MYSOL USERNAME, MYSOL PASSWORD, database, TODAYBACKUPPATH,database)exit code subprocess.call(command,shellTrue)# 判断命令是否正常执行异常则直接抛出if exit code ! 0:raise Exception(在备份数据库的过程中出错请检査!)logging.info(数据库 {} 备份完毕!.format(database))def del old backup(path):删除保留时长以外的数据备份old folder subprocess.Popen(find {} -maxdepth 3 -mindepth 2 -mtime {} -typed.format(path, DAY),stdoutsubprocess.PIPE, stderrsubprocess.STDOUT,shellTrue).communicate()logging.info(时间戳为{}的备份将被删除.format(old folder))str old folder old folder[0].decode(utf-8,errorsignore)logging.info({}.format(str old folder))list lid folder str old folder.split(\n)for folder in list lid folder:if folder.strip():logging.info(删除{.format(folder))os.system(rm -rf {}.format(folder)) def backup():读取全部数据库名称并对这些数据库的数据和结构进行备份#检查备份路径是否存在不存在则进行创建mkdir if not exists(TODAYBACKUPPATH)#读取全部待备份数据库名称databases read all databases()# 逐个对数据库进行备份database in databases:forbackup database(database)# 删除旧备份del old backup(BACKUP PATH)#打印备份文件放置的目录print(\n)command echo -e\e[;31m 本次备份放置的位置是:subprocess.call(command,shellTrue)print(TODAYBACKUPPATH)commandecho -ee[msubprocess.call(command,shellTrue) if_name__ main :backup() 3.执行 Python 脚本并查看备份后的 sql文件 编写完成后执行脚本完成备份执行命令及结果如下: [rootlocalhost ~]# python3 backup_mysql.py 2024-10-16 09:45:30,118 - /root/backup_mysql.py[line:42] - INFO:creating backup folder 2024-10-16 09:45:30,145 - /root/backup_mysql.py[line:61] - INFO:读取全部数据库名称 2024-10-16 09:45:30,174 - /root/backup_mysql.py[line:72] - INFO:读取数据库完毕数据库列表如下[test] 2024-10-16 09:45:30,175 - /root/backup_mysql.py[line:82] - INFO:开始备份数据库test... 2024-10-16 09:45:30,191 - /root/backup_mysql.py[line:90] - INFO:数据库 test 备份完毕 2024-10-16 09:45:30,193 - /root/backup_mysql.py[line:98] - INFO:时间戳为(b, None)的备份将被删除 2024-10-16 09:45:30,194 - /root/backup_mysql.py[line:100] - INFO:本次备份放置的位置是: /backup/mysql/localhost/20241016094530 执行过备份脚本后会将所有的数据库备份到同一个目录中如果再次执行此脚本就会创建一个新的目录将所有的库的备份文件存放进去。 用户可以将此脚本写入到周期性计划任务中实现自动化的周期性数据库备份 注意:warning 警告的意思是在命令行界面上使用密码可能不安全。所以在实际生产环境中可以利用常量来代替明文输入密码的这一步或者在配置文件中填写用户名密码等方式保障安全。备份结束之后可以在当前主机查看备份的结果。 4.编写导入数据库脚本restore_mysql.py 使用 Python 编写数据库备份脚本 restore_mysql.py 文件代码如下: [rootlocalhost ~]# vim restore_mysql.py import logging import os import subprocess import pymysql logging.basicConfig(format%(asctime)s-%(pathname)s[line:%(lineno)d]-%(levelname)s: %(message)s,levellogging.INFO) # 设置日志输出格式MYSQL_USERNAME root # MySQL 数据库用户名 MYSQL_PASSWORD 123456 # 数据库密码 MYSQL_HOST 192.168.10.103 # 数据库主机地址 MYSQL_PORT 3306 # 数据库端口 BACKUP_PATH /backup/mysql/192.168.10.102/20231216193331 # 注意要替换成你的备 份文件存放路径logging.info(开始获取需要恢复的数据库文件...) files list(os.listdir(BACKUP_PATH)) logging.info(文件列表{}.format(files)) for file in files: # 开始逐个恢复数据库mydatabase({}.format(file.split(.)[0]))print(\r)print(导入数据库mydatabase)command mysql -h{host} -f -u{user} -p{password} -P{port} -e drop database {mydatabase}/dev/null.format(hostMYSQL_HOST,userMYSQL_USERNAME,passwordMYSQL_PASSWORD,portMYSQL_PORT,mydatabasemydatabase)subprocess.call(command, shellTrue)command mysql -h{host} -f -u{user} -p{password} -P{port} -e create database {mydatabase}/dev/null.format(hostMYSQL_HOST,userMYSQL_USERNAME,passwordMYSQL_PASSWORD,portMYSQL_PORT,mydatabasemydatabase)subprocess.call(command, shellTrue)logging.info(开始恢复数据库 {}....format(file.split(.)[0]))command mysql -h{host} -f -u{user} -p{password} -P{port} {mydatabase}{path}/{file}.format(hostMYSQL_HOST,userMYSQL_USERNAME,passwordMYSQL_PASSWORD,portMYSQL_PORT,filefile,pathBACKUP_PATH,mydatabasemydatabase)subprocess.call(command, shellTrue) logging.info(完毕) 5.执行数据库导入操作  我们可以将数据库导入到任何一个 mysq1 服务器中这样我们就可以方便的进行数据库的迁移。 [rootlocalhost ~]# python3 restore_mysql.py 2024-10-16 11:26:15,423-/root/restore_mysql.py[line:13]-INFO: 开始获取需要恢复的数据库文件... 2024-10-16 11:26:15,423-/root/restore_mysql.py[line:15]-INFO: 文件列表[test.sql]导入数据库test 2024-10-16 11:26:15,440-/root/restore_mysql.py[line:28]-INFO: 开始恢复数据库 test... 2024-10-16 11:26:15,453-/root/restore_mysql.py[line:31]-INFO: 完毕 备份和恢复的数据库服务器可以不是同一台服务器所以此脚本也可用于数据库迁移的场景。当目标数据库中已经有同名的数据库了会先删除同名数据库再重新创建并恢复数据。所以在实际生产环境中请确认此还原逻辑是否符合需求。对于执行数据库还原脚本时一定要谨慎操作。
http://www.w-s-a.com/news/6397/

相关文章:

  • 手机网站横竖屏一般做建设的是什么公司
  • 免费网站建设无广告网站开发 华景新城
  • 湖州网站制作报价西安网站开发有哪些公司
  • google 浏览器开源seo软件
  • 网站空间是什么意思自己怎样建设网站
  • 国外家装设计网站如何做软件开发
  • 凡科建站登录官网当当网网站建设策划书
  • 网站百度屏蔽关键词杭州排名优化公司
  • h5响应式网站模板下载wordpress鼠标指针
  • 摄影作品投稿网站目前最好的引流推广方法
  • 资源站源码永久dede网站搬家 空间转移的方法
  • 网站建设销售的技巧话语it培训机构
  • 自建本地网站服务器wordpress南充房产网最新楼盘最近房价
  • 郑州代做网站天津哪里能做网站
  • 网站如何做排名网站建设项目的工作分解
  • 洛阳网络建站公司网站开发主流语言
  • 广州各区正在进一步优化以下措施seo值是什么意思
  • 滨州建网站公司京东云 wordpress
  • 网站视频背景怎么做免费的网络推广有哪些
  • 申请网站怎样申请广西壮族自治区专升本业务系统
  • 写作网站哪个网站做ic外单好
  • 苏州和城乡建设局网站撸撸撸做最好的导航网站
  • 网站被同行抄袭怎么办深圳中装建设集团
  • 建站及推广瓦房店 网站建设
  • 怎么查网站是在哪里备案的广州电力建设有限公司网站
  • 做网站自己申请域名还是对方wordpress管理地址
  • 专门做二手书网站或appwordpress首页显示特定分类文章
  • 无锡网站设计厂家一建十个专业含金量排名
  • 网站刷链接怎么做成都高度网站技术建设公司
  • flash网站模板怎么用xml网站地图生成