当前位置: 首页 > news >正文

python如何创建SQLite 数据库连接,如何将数据库存储在内存中?

嗨,大家好,我是兰若姐姐。今天给大家说下如何创建SQLite 数据库连接,并将数据库存储在内存中,这是一种临时的、私有的数据存储空间,一般用于以下情形:

什么都不说,先上代码:

import sqlite3

创建数据库连接

conn = sqlite3.connect(':memory:')cursor = conn.cursor()

描述数据库表结构

database_schema_string = """CREATE TABLE orders (id INT PRIMARY KEY NOT NULL, -- 主键,不允许为空customer_id INT NOT NULL, -- 客户ID,不允许为空product_id STR NOT NULL, -- 产品ID,不允许为空price DECIMAL(10,2) NOT NULL, -- 价格,不允许为空status INT NOT NULL, -- 订单状态,整数类型,不允许为空。0代表待支付,1代表已支付,2代表已退款create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 创建时间,默认为当前时间pay_time TIMESTAMP -- 支付时间,可以为空);

创建orders表

cursor.execute(database_schema_string)

插入5条明确的模拟记录

mock_data = [(1, 1001, 'TSHIRT_1', 50.00, 0, '2023-09-12 10:00:00', None),(2, 1001, 'TSHIRT_2', 75.50, 1, '2023-09-16 11:00:00', '2023-08-16 12:00:00'),(3, 1002, 'SHOES_X2', 25.25, 2, '2023-10-17 12:30:00', '2023-08-17 13:00:00'),(4, 1003, 'SHOES_X2', 25.25, 1, '2023-10-17 12:30:00', '2023-08-17 13:00:00'),(5, 1003, 'HAT_Z112', 60.75, 1, '2023-10-20 14:00:00', '2023-08-20 15:00:00'),(6, 1002, 'WATCH_X001', 90.00, 0, '2023-10-28 16:00:00', None)]for record in mock_data:cursor.execute('''INSERT INTO orders (id, customer_id, product_id, price, status, create_time, pay_time)VALUES (?, ?, ?, ?, ?, ?, ?)''', record)

提交事务

conn.commit()

这样就在内存中的 SQLite 数据库,定义了一个名为 orders 的表,并插入了一些模拟的订单数据。这种方式通常用于测试或开发环境,因为内存数据库速度快且不需要管理磁盘文件

  1. 访问内存中的数据库:
  • 由于数据库存储在内存中,因此可以直接使用 sqlite3 模块提供的接口来访问和操作数据。

  • 我们创建了一个数据库连接 conn = sqlite3.connect(':memory:'),并获取了一个游标对象 cursor = conn.cursor()

  • 使用这个游标对象,我们就可以执行各种 SQL 查询和操作,例如 cursor.execute("SELECT * FROM orders") 来查询 orders 表中的所有数据。

  • 最后,记得在操作完成后调用 conn.commit() 提交更改,或 conn.rollback() 回滚更改。

  1. 无需账号密码:
  • 在使用 sqlite3.connect(':memory:') 创建内存数据库连接时,不需要指定任何账号和密码。

  • SQLite 是一种嵌入式数据库,它不需要独立的数据库服务器,也不需要用户认证。

  • 内存中的 SQLite 数据库是完全私有的,只能被当前运行的 Python 程序访问。没有其他用户或进程能访问这个数据库。

因此,在使用内存中的 SQLite 数据库时,你不需要担心账号和密码的问题。这种方式适合于开发和测试环境,是一个临时的、私有的数据存储空间。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • git clone加速
  • huawei USG6001v1学习---防火墙相关知识(2)
  • Java基础编程500题——String
  • Kubernetes Service 之 LoadBalancer
  • Proxyman for Mac v5.6.1 抓包调试工具
  • 【Qt+opencv】计时函数与图像变换
  • AGI 之 【Hugging Face】 的【零样本和少样本学习】之三 [无标注数据] 的简单整理
  • 设计模式七大原则(五)迪米特法则
  • FPGA 中的 IOE与IO BANK
  • Windows环境Apache配置解析PHP,以及配置虚拟主机详解
  • springSecurity学习之springSecurity简介
  • 贝锐蒲公英远程运维方案:即装即用、无需专线,断网也可远程维护
  • Linux系统学习日记——vim操作手册
  • 网络安全防御 -- 双机热备和带宽管理综合实验
  • 【iOS】——消息传递底层实现
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 2017年终总结、随想
  • exports和module.exports
  • java2019面试题北京
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Less 日常用法
  • magento2项目上线注意事项
  • Map集合、散列表、红黑树介绍
  • MySQL数据库运维之数据恢复
  • SQLServer之创建显式事务
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Vue全家桶实现一个Web App
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 安装python包到指定虚拟环境
  • 彻底搞懂浏览器Event-loop
  • 工程优化暨babel升级小记
  • 老板让我十分钟上手nx-admin
  • 前端路由实现-history
  • 前端相关框架总和
  • 前端自动化解决方案
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 时间复杂度与空间复杂度分析
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 《码出高效》学习笔记与书中错误记录
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • #git 撤消对文件的更改
  • #includecmath
  • #Linux(make工具和makefile文件以及makefile语法)
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (2024)docker-compose实战 (8)部署LAMP项目(最终版)
  • (3)STL算法之搜索
  • (WSI分类)WSI分类文献小综述 2024
  • (二)学习JVM —— 垃圾回收机制
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (六)vue-router+UI组件库