文章目录

    • Cursor code generate介绍
    • Cursor 代码生成实战
      • prompt1
      • prompt2
      • prompt3
      • prompt4
    • 我的感受

Cursor code generate介绍

之前看过github copilot 的代码生成能力。可以说解放了码农的双手,基础的代码完全可以来生成。可是后来它收费了。

今天在网上发现这个免费的code generate。
下面官网

Cursor 代码生成实战

prompt1

prompts : 比较两个数据库的差异,数据库的ip地址是10.50.10.170,…

prompt2

我的prompts: 是两个数据库比较差异,第二个数据库是的ip是10.50.10.171. 两个数据库的port都是5432

# 导入所需库import psycopg2# 连接数据库connection1 = psycopg2.connect(host='10.50.10.170', port=5432, user='username', password='xxx', dbname='qmstst')cursor1 = connection1.cursor()connection2 = psycopg2.connect(host='10.50.10.171', port=5432, user='username', password='xxx', dbname='qmstst')cursor2 = connection2.cursor()# 从文件中获取表名with open("tables.txt", "r") as file:table_names = [line.strip() for line in file.readlines()]differences = []for i in range(len(table_names) - 1):# 查询两个表的数据量cursor1.execute(f"SELECT COUNT(*) FROM {table_names[i]}")table1_count = cursor1.fetchone()[0]cursor2.execute(f"SELECT COUNT(*) FROM {table_names[i+1]}")table2_count = cursor2.fetchone()[0]# 计算数据量差异difference = abs(table1_count - table2_count)differences.append(difference)# 输出结果到文件with open("output.txt", "w") as output_file:for i in range(len(differences)):output_file.write(f"表 {table_names[i]} 和表 {table_names[i+1]} 的数据量差异为: {differences[i]}\n")# 关闭数据库连接cursor1.close()connection1.close()cursor2.close()connection2.close()

prompt3

promtps : 最终输出结果是有差异的表,结果需要有时间。需要包含哪个ip的哪个表。

# 导入所需库import psycopg2from datetime import datetime# 连接数据库connection1 = psycopg2.connect(host='10.50.10.170', port=5432, user='username', password='xxx', dbname='qmstst')cursor1 = connection1.cursor()connection2 = psycopg2.connect(host='10.50.10.171', port=5432, user='username', password='xxx', dbname='qmstst')cursor2 = connection2.cursor()# 从文件中获取表名with open("tables.txt", "r") as file:table_names = [line.strip() for line in file.readlines()]differences = []for i in range(len(table_names) - 1):# 查询两个表的数据量cursor1.execute(f"SELECT COUNT(*) FROM {table_names[i]}")table1_count = cursor1.fetchone()[0]cursor2.execute(f"SELECT COUNT(*) FROM {table_names[i+1]}")table2_count = cursor2.fetchone()[0]# 计算数据量差异difference = abs(table1_count - table2_count)if difference > 0:differences.append((table_names[i], table_names[i+1], difference))# 输出结果current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")for table1, table2, difference in differences:message = f"{current_time} - IP: 10.50.10.170 表 {table1} 和 IP: 10.50.10.171 表 {table2} 的数据量差异为: {difference}"print(message)connection1.close()cursor2.close()connection2.close()

prompt4

将输出结果推送到企业微信。

from datetime import datetime# 连接数据库connection1 = psycopg2.connect(host='10.50.10.170', port=5432, user='username', password='xxx', dbname='qmstst')cursor1 = connection1.cursor()connection2 = psycopg2.connect(host='10.50.10.171', port=5432, user='username', password='xxx', dbname='qmstst')cursor2 = connection2.cursor()# 从文件中获取表名with open("tables.txt", "r") as file:table_names = [line.strip() for line in file.readlines()]differences = []for i in range(len(table_names) - 1):# 查询两个表的数据量cursor1.execute(f"SELECT COUNT(*) FROM {table_names[i]}")table1_count = cursor1.fetchone()[0]cursor2.execute(f"SELECT COUNT(*) FROM {table_names[i+1]}")table2_count = cursor2.fetchone()[0]# 计算数据量差异difference = abs(table1_count - table2_count)if difference > 0:differences.append((table_names[i], table_names[i+1], difference))# 导入企业微信库from wxwork_bot import WxWorkBot# 初始化企业微信机器人bot = WxWorkBot("your_bot_key")# 输出结果并发送到企业微信报警current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")for table1, table2, difference in differences:message = f"{current_time} - IP: 10.50.10.170 表 {table1} 和 IP: 10.50.10.171 表 {table2} 的数据量差异为: {difference}"bot.send_text(message)connection1.close()cursor2.close()connection2.close()

我的感受

  • 从prompt1可以看出代码生成之后还会提示合并还是丢弃,这个比较人性化。因为不确定cursor对prompts的理解,这样的好处是可以及时调整prompts来生成更加符合要求的结果
  • 从prompt3来看这个还是会一行一行扫描,而不是直接定位到需要修改的地方。这一点比较慢。
  • 其实可以只对部分代码进行框选进行优化,这个速度应该会提升。
  • 竟然可以回滚prompt。