SQL学习小记(三)

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

功能实现

思路

数据更新
数据库连接
数据库连接
成功
失败
成功
存在
不存在
不空
database2中表是否为空
打印信息,表已存在
建表,表头信息
清空表
向database2插入数据
返回数据库
数据库是否连接成功
表是否存在
程序启动
数据更新
关闭数据库

假设 database1database2的信息分别为:

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

代码

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中查询query
    existing_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() 		# 使用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代码非常简单,只需要在命令行中输入以下命令:

pyinstaller test.py

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

  • 20
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值