SQL学习小记(三)

2024-05-29 1836阅读

SQL学习小记(三)

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

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

      功能实现

      思路

      假设 database1 和 database2的信息分别为:

      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()
          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的图表如下所示:

      SQL学习小记(三)

      参考:6种将Python代码打包成exe应用的方式

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]