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应用的方式