SQL学习小记(三)
- 功能实现
 - 思路
 - 代码
 - 部分名词解释
 
- 代码打包为可执行文件
 
功能说明:使用python代码,将数据库database1中的表格table1同步到数据库database2中
功能实现
思路
假设 database1 和 database2的信息分别为:
| IP地址 | 端口号 | 用户名 | 密码 | 数据库名 | |
|---|---|---|---|---|---|
| database1 | 10.10.0.0 | 7890 | root1 | 123456 | database1 | 
| database2 | 10.10.0.1 | 7891 | root2 | 123456 | database2 | 
代码
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()
    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应用的方式













![[IMX6ULL驱动开发]-Linux对中断的处理(二)](https://img-blog.csdnimg.cn/direct/090295c8b8ff4692bb271b6500726dc9.png)





