python静态数据存储_将静态数据存储在数组中还是数据库中?

本文探讨了在数据库中存储复杂数据结构如requirement的问题。通过使用序列化如pickle来存储对象,虽然方便读取,但在初始化和更新数据结构时面临挑战。手动输入序列化后的字符串到SQL中既繁琐又易出错。文章提出了数据结构变更时的繁琐流程,强调了寻找更高效自动化方案的必要性。
摘要由CSDN通过智能技术生成

这是我们的第一个方案, 我们可以存储在数据库表中.

那么这里会出现一个问题, 就是类似于上例中requirement这样比较复杂的数据结构该如何存储呢?

当然,你会说, 这难不倒我, 我们可以使用序列化后的对象, 如python中的pickle来对对象 进行序列化,然后存储在表项中, 在读取时直接可以转换为对象来使用.

这种方案是没有问题的, 但是随之而来会有一个比较难处理的问题, 因为我们这里提到的静态数据 通常是已经设定好的数据, 而在运行时是不会更改的,那么我们就必须在初始化时要构建好这些数据. 所以,会面临着把这些初始化到数据库的操作.

为了达到这个目的,你可以选择sql语句, 或者django框架中的fixture等,但是逃不脱的是你需要手动输入 序列化好的对象.

例如, 对象 a = {"name":"zhutao", "gender" : "male"} 序列化后(pickle)的结果(记为b)为:(dp0

S'gender'

p1

S'male'

p2

sS'name'

p3

S'zhutao'

p4

s.

你会看到是一串人类无法容易识别的字符串, 那么我们手动输入就更加困难, 当然你可以,先把结构写好然后将序列化后 的字符串直接拷贝到sql中, 没有问题, 不过,相当麻烦. 想像下,如果我们后面要更改这个结构,我们需要:

更改数据结构=>将更改后的数据结构序列化=>将得到的序列化字符串拷贝到sql中

而更多的环节意味着更多的出错可能.

当然, 这样序列化后的数据也很容易转换为原始的对象, 例如:c = pickle.loads(b)

#这时c是a的一份完全的拷贝

将HTML表单连接到服务器端数据库通常涉及以下几个步骤: 1. **后端编程语言**:选择一个服务器端语言,如PHP、Python(Flask/Django)、Node.js(Express)、Ruby on Rails等,它们都有库支持处理HTTP请求和数据库操作。 2. **数据库设置**:安装并配置数据库系统,比如MySQL、PostgreSQL、MongoDB等。在服务器上创建一个新的数据库,并为申请表单创建一个合适的表结构。 3. **服务器端路由**:在后端框架,创建一个特定的URL路由来接收表单数据。当用户提交表单时,该路由会触发。 4. **表单数据获取**:在后端脚本,解析从客户端(浏览器)发送过来的POST请求,这通常是XMLHttpRequest或者普通的HTTP POST请求,其包含了表单的数据。 5. **数据验证与清理**:对收到的数据进行必要的验证,确保它们符合预期格式,防止SQL注入等安全问题。清除可能存在的非法字符或空值。 6. **插入数据库**:验证无误后,将数据插入到相应的数据库。这通常涉及到SQL查询(INSERT INTO)操作。 7. **返回反馈**:向客户端返回确认信息或错误消息,告诉用户表单提交成功还是失败。 例如,在PHP,你可以使用`$_POST`数组来获取表单数据,并使用PDO或mysqli扩展来与数据库交互: ```php <?php $servername = "localhost"; $username = "your_username"; $password = "your_password"; $dbname = "your_database"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $name = $_POST['name']; $email = $_POST['email']; $sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')"; if ($conn->query($sql) === TRUE) { echo "新记录插入成功"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $conn->close(); ?> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值