Python 操作sqlite数据库及保存查询numpy类型数据(一)
2024-10-20 20:34:04
# -*- coding: utf-8 -*-
'''
Created on 2019年3月6日
@author: Administrator
'''
import sqlite3
import numpy as np
import io
def adapt_array(arr):
out = io.BytesIO()
np.save(out, arr)
out.seek(0)
return sqlite3.Binary(out.read())
def convert_array(text):
out = io.BytesIO(text)
out.seek(0)
return np.load(out)
# 创建数据库连接对象
conn = sqlite3.connect('sample_database.db', detect_types=sqlite3.PARSE_DECLTYPES) # 连接到SQLite数据库
'''
sqlite3.PARSE_DECLTYPES
本常量使用在函数connect()里,设置在关键字参数detect_types上面。表示在返回一行值时,是否分析这列值的数据类型定义。如果设置了本参数,就进行分析数据表列的类型,并返回此类型的对象,并不是返回字符串的形式。
sqlite3.PARSE_COLNAMES
本常量使用在函数connect()里,设置在关键字参数detect_types上面。表示在返回一行值时,是否分析这列值的名称。如果设置了本参数,就进行分析数据表列的名称,并返回此类型的名称
'''
# 参数:memory:来创建一个内存数据库
# conn = sqlite3.connect(":memory:", detect_types=sqlite3.PARSE_DECLTYPES)
# Converts np.array to TEXT when inserting
sqlite3.register_adapter(np.ndarray, adapt_array)
# Converts TEXT to np.array when selecting
sqlite3.register_converter("array", convert_array)
x = np.arange(12).reshape(2, 6)
# conn = sqlite3.connect(":memory:", detect_types=sqlite3.PARSE_DECLTYPES)
cursor = conn.cursor()
# 创建数据库表
cursor.execute("create table test (arr array)")
# 插入一行数据
cursor.execute("insert into test (arr) values (?)", (x,))
# 提交
conn.commit()
cursor.execute("select arr from test")
data = cursor.fetchone()[0]
print(data)
'''
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]]
'''
print(type(data))
'''
<class 'numpy.ndarray'>
'''
cursor.close() # 关闭Cursor
conn.close() # 关闭数据库
最新文章
- Digital root(数根)
- LeetCode:4_Median of Two Sorted Arrays | 求两个排序数组的中位数 | Hard
- Cron 表达式详解和案例
- WayPoint寻路
- VS2015预览
- MySQL binlog 的恢复操作
- 关于Java的异常
- 从PRISM开始学WPF(八)導航Navigation?
- 在PL/SQL中调用Oracle存储过程
- CodeForces - 1051D-简单DP
- 2018 Multi-University Training Contest 1 杭电多校第一场
- [LeetCode] 90.Subsets II tag: backtracking
- 测试那些事儿—selenium自动化实战之登录验证码处理
- Linux学习笔记之六————Linux常用命令之系统管理
- [Oracle][PDB]PDB restore/recover 过程记录
- Building a Keras + deep learning REST API(三部曲之一)
- Codeforces 799D Field expansion - 搜索 - 贪心
- gaia 开源多语言的pipeline 平台
- 高德地图打包后不能使用,高德导航View不显示,高德地图导航组件黑屏的问题;
- CSS属性书写顺序及命名规则
热门文章
- [51nod1383&;1048]整数分解为2的幂:DP
- struts2.3.20+spring4.0.2+hibernate4.3.4框架整合
- java 用redisTemplate 的 Operations存取list集合
- insert和insertSelective区别
- Centos 7 Redmine 安装,粘贴图片插件安装
- leetcode-mid-sorting and searching - 240. Search a 2D Matrix II -NO
- 【汇总】Wireshark 过滤规则
- .NET中使用EF6与连接MYSQL
- mybatisProxy
- C++:输入n个数,通过气泡法从小到大排列顺序(掌握不熟,还请谅解)