每日10行代码181:用chatgpt实现基于flask的表单收集信息存入oracle的小应用

8 篇文章 0 订阅
3 篇文章 0 订阅

背景:最近学习flask,于是想着用chatgpt试一下编程效果,结果试了下,大大出乎意料,看来以后学编程真的要换方法了,要从以前面向搜索的编程换成以后面向chatgpt的编程了。

以下代码,大部分都是chatgpt生成,我只是给出了几个指令进行引导,然后调试了下程序,包括中间报错了,也是把错误告诉chatgpt后,他帮我更正的。可惜的是,由于重装系统,我找不到以前的跟chatgpt的对话记录了。
大概的指令就是“利用flask创建一个表单,用来收集人员的姓名和电话,最后存入oracle数据库中”

主程序app1.py

from flask import Flask, render_template, request
import oracledb

app = Flask(__name__)

# 连接Oracle数据库
oracledb.init_oracle_client()
mydsn = '''  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.150.128)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID= orcl)
    )
  )'''

conn = oracledb.connect(user='scott', password='tiger', dsn=mydsn)

# 创建表
cursor = conn.cursor()
try:
    cursor.execute("""
        CREATE TABLE person (
            id NUMBER PRIMARY KEY,
            name VARCHAR2(50) NOT NULL,
            phone VARCHAR2(20) NOT NULL
        )
    """)
except oracledb.DatabaseError:
    pass
cursor.close()

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/submit', methods=['POST'])
def submit():
    name = request.form['name']
    phone = request.form['phone']
    cursor = conn.cursor()

    # 查询当前最大的id值
    cursor.execute("SELECT MAX(id) FROM person")
    max_id = cursor.fetchone()[0]

    # 如果表中没有数据,则将max_id设为0
    if max_id is None:
        max_id = 0

    # 生成新的id值
    new_id = max_id + 1

    # 插入数据
    cursor.execute("INSERT INTO person (id, name, phone) VALUES (:id, :name, :phone)", {'id': new_id, 'name': name, 'phone': phone})
    conn.commit()
    cursor.close()
    return 'Success'


@app.route('/show')
def show():
    cursor = conn.cursor()
    cursor.execute("SELECT name, phone FROM person")
    rows = cursor.fetchall()
    cursor.close()
    return render_template('show.html', rows=rows)

if __name__ == '__main__':
    app.run(debug=True)

index.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Person Form</title>
</head>
<body>
    <h1>Person Form</h1>
    <form method="POST" action="/submit">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name" required>
        <br>
        <label for="phone">Phone:</label>
        <input type="text" id="phone" name="phone" required>
        <br>
        <input type="submit" value="Submit">
    </form>
</body>
</html>

show.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Person List</title>
</head>
<body>
    <h1>Person List</h1>
    <table>
        <thead>
            <tr>
                <th>Name</th>
                <th>Phone</th>
            </tr>
        </thead>
        <tbody>
            {% for row in rows %}
            <tr>
                <td>{{ row[0] }}</td>
                <td>{{ row[1] }}</td>
            </tr>
            {% endfor %}
        </tbody>
    </table>
</body>
</html>

中途遇到的问题:

  1. chatgpt最开始给的sql语法不对,是因为他用的sql里有 if not exists.而oracle是没有if not exists这种语法的。
  2. chatgpt用了以前的cx_oracle这个库,但是这个库已经升级更新了,现在名字是oracledb,当我告诉他之后,他就用oracledb从新改写了代码。
  3. chatgpt第一次给的建表语句是适用于oracle12以后的,但我用的是oracle11,当告诉chatgpt后,他也更正了代码。
  4. 中间还报了一次错,因为他建表时有id,而表单收集数据没有id,两边字段不一致,当我把报错信息告诉chatgpt后,他很快的指出了错误原因,这一点让人很惊叹。

总之,chatgpt的表现超出我的预料,尤其是写代码方面的能力,看来以后他确实能大大提高程序员的工作效率,也会抢了一些程序员的饭碗。以后学编程的方式估计也要变化,以后估计是先学了基本概念后,就让chatgpt设计程序,自己照着来,最后再调试,有不懂的问chatgpt,这种学习效率会比现在高很多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值