SQL学习小记(三)

server/2024/11/13 5:35:00/

SQL学习小记(三)

  • 功能实现
    • 思路
    • 代码
    • 部分名词解释
  • 代码打包为可执行文件

功能说明:使用python代码,将数据库database1中的表格table1同步到数据库database2中

功能实现

思路

数据更新
数据库连接">
数据库连接
数据库-0" class=" edge-thickness-normal edge-pattern-solid flowchart-link LS-I LE-关闭数据库" style="fill:none;" marker-end="url(#flowchart-pointEnd)">
数据库连接
成功
失败
成功
存在
不存在
不空
database2中表是否为空
打印信息,表已存在
建表,表头信息
清空表
向database2插入数据
返回数据库
数据库是否连接成功
表是否存在
程序启动
数据更新
数据库-12351" transform="translate(2023.34375, 155.4921875)">
关闭数据库

假设 database1database2的信息分别为:

IP地址端口号用户名密码数据库
database110.10.0.07890root1123456database1
database210.10.0.17891root2123456database2

代码

python">import schedule
import time
from datetime import datetime, timedelta
import sqlite3
import pymysql
# 数据库连接
def mysql_link(host, port, user, password, db):try:db = pymysql.connect(host=host,  # IP地址port=port,  # 端口号user=user,  # 用户名password=password,  # 密码db=db,  # 数据库charset='utf8')# 文本数据编码方式return db		#返回数据库except:print("could not connect to mysql server") # 没有连接到数据库
# 数据库更新
def update_database():# 连接到数据库# 更新数据库table1# conn_a和cursor_b 为数据库对象conn_a = mysql_link("10.10.0.0", 7890, "root1", "123456", "database1")  # database1数据库cursor_a = conn_a.cursor()	# cursor_a的游标conn_b = mysql_link("10.10.0.1", 7891, "root2", "123456", "database2")  # database2数据库cursor_b = conn_b.cursor()  # cursor_b的游标# 判断表是否存在table_name = 'table1'conn_b_db = 'database2'query = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = %s AND TABLE_NAME = %s"cursor_b.execute(query, (conn_b_db, table_name))	# 在数据库conn_b_db的表table_name中查询queryexisting_table = cursor_b.fetchone()	# 查询结果中提取下一行数据if existing_table:print(f"Table '{table_name}' already exists.")else:# 不存在时创建表结构cursor_b.execute("CREATE TABLE table1(""id varchar(32) PRIMARY KEY, name longtext , old longtext, year longtext, ""sex longtext, score longtext, score2 longtext, score3 longtext,total_points longtext)")# 提交更改conn_b.commit()print(f"Table '{table_name}' created.")cursor_a.execute("SELECT * FROM table1")cursor_b.execute("SELECT * FROM table1")result = cursor_b.fetchone()if result:cursor_b.execute("TRUNCATE TABLE table1")	# 清空表rows = cursor_a.fetchall()for row in rows:cursor_b.execute("INSERT INTO table1VALUES (%s, %s, %s,%s,%s,%s, %s,%s,%s) ", row)conn_b.commit() 	# 提交更改conn_b.close()		# 关闭数据库conn_a.close()
if __name__ == '__main__':update_database()	# 数据库更新

部分名词解释

数据库游标(cursor)是用来在数据库连接上执行SQL查询和操作的对象。当建立了数据库连接之后,可以使用游标来执行各种数据库操作,如查询数据、插入数据、更新数据和删除数据
游标本质上是一个指针,它指向数据库中的某个位置,可以遍历查询结果集中的各行数据。通过游标,可以执行SQL语句,检索并处理查询结果,以及提交更改到数据库中。

代码打包为可执行文件

pyinstaller 是一个流行的Python打包工具,它可以将Python代码打包成独立的可执行文件。

首先进行pyinstaller安装:win+R——>cmd——> 确定
在终端输入:

pip install pyinstaller

使用pyinstaller打包Python代码非常简单,只需要在命令行中输入以下命令:

python">pyinstaller test.py

压缩成功之后,在py文件所在文件夹里面会出现一些文件夹和文件,其中生成的exe可执行文件在dist中,exe的图表如下所示:
在这里插入图片描述
参考:6种将Python代码打包成exe应用的方式


http://www.ppmy.cn/server/44542.html

相关文章

智慧园区导航地图怎么制作?智慧园区可视化地图开发

当下园区的建设,向高度智慧化、可视化、数字化的方向发展,在快速发展的园区环境中,寻路、资产可视化管理等问题日益凸显,成为影响园区运营效率和访客体验的关键因素。传统的指示牌地图无法更为智能化地满足人们对精确、动态导引的…

前端数据存储之cookie、LocalStorage与SessionStorage

JS详解Cookie、LocalStorage与SessionStorage 基本概念 Cookie Cookie是小甜饼的意思。顾名思义,cookie确实非常小,它的大小限制为4KB左右。他的主要用途又保存登录信息,比如你登录某个网站市场可以看到“记住密码”,这通常就是…

【Spring】Spring AOP底层原理:JDK动态代理和CGLIB动态代理

目录 1、代理模式 1.1、静态代理 1.2、动态代理 2、JDK 动态代理 2.1、jdk动态代理简介 2.2、使用JDK动态代理机制步骤 3、CGLIB 动态代理 3.1、CGLIB 动态代理的特性 3.2、CGLIB的核心类 3.3、CGLIB 动态代理步骤 4、JDK 和 CGLIB 创建代理对象的区别 ​编辑 1、…

依赖的各种java库(工具类) :fastjson,lombok,jedis,druid,mybatis等

lombok 功能&#xff1a; Lombok 是一个实用的Java类库&#xff0c;可以通过简单的注解来简化和消除一些必须有但显得很臃肿的Java代码。 导入包&#xff1a;使用Lombok首先要将其作为依赖添加到项目中&#xff0c;在pom.xml文件中手动添加 <dependency><groupId&g…

英语学习笔记21+23——Which book?/Which glasses?

Which book?/Which glasses? 哪本书&#xff1f;/哪些杯子&#xff1f; 词汇 Vocabulary give v. 给 搭配&#xff1a;Give me five! 击掌庆祝 用法&#xff1a;give 人 东西     give 东西 to 人    把……东西给某人 例句&#xff1a;把这些苹果给 Bobby.   …

CentOS7安装MySQL教程

第一章 检查是否安装了Mysql 1.1 yum检查 yum list installed | grep mysql 1.2 安装则直接删除 yum remove xxx 1.3 rpm检查 rpm -qa | grep -i mysql # 有则直接删除 rpm -e --nodeps xxx 第二章 正式安装MySQL 2.1 yum安装&#xff0c;下载mysql wget --no-check-ce…

【程序填空题】日期比较(运算符重载)

题目描述 定义一个日期类CDate&#xff0c;包含属性&#xff1a;年、月、日&#xff0c;都是整数。 构造函数含单个参数&#xff0c;参数是八位整数&#xff0c;默认值为0&#xff0c;实现整数转为日期类型&#xff0c;例如参数为20170612&#xff0c;转为year2017, month6, …

axios的responseType有几种值

axios的responseType配置项可以接受多种值&#xff0c;用于指定服务器响应的数据类型。以下是axios支持的responseType值&#xff1a; json &#xff08;默认&#xff09;&#xff1a;服务器响应会被解析成JavaScript对象。arraybuffer&#xff1a;服务器响应会被解析成一个Ar…