欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中sqllite插入numpy數(shù)組到數(shù)據(jù)庫的實現(xiàn)方法

 更新時間:2021年06月21日 16:44:00   作者:修煉之路  
本文給大家介紹python中sqllite插入numpy數(shù)組到數(shù)據(jù)庫的實現(xiàn)方法,在文章底部給大家提到了Python 操作sqlite數(shù)據(jù)庫及保存查詢numpy類型數(shù)據(jù)的實例代碼,需要的朋友參考下吧

sqllite里面并沒有與numpy的array類型對應(yīng)的數(shù)據(jù)類型,通常我們都需要將數(shù)組轉(zhuǎn)換為text之后再插入到數(shù)據(jù)庫中,或者以blob類型來存儲數(shù)組數(shù)據(jù),除此之外我們還有另一種方法,能夠讓我們直接以array來插入和查詢數(shù)據(jù),實現(xiàn)代碼如下

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)


# 當(dāng)插入數(shù)據(jù)的時候?qū)rray轉(zhuǎn)換為text插入
sqlite3.register_adapter(np.ndarray, adapt_array)

# 當(dāng)查詢數(shù)據(jù)的時候?qū)ext轉(zhuǎn)換為array
sqlite3.register_converter("array", convert_array)


#連接數(shù)據(jù)庫
con = sqlite3.connect("test.db", detect_types=sqlite3.PARSE_DECLTYPES)
cur = con.cursor()

#創(chuàng)建表
cur.execute("create table test (arr array)")

#插入數(shù)據(jù)
x = np.arange(12).reshape(2,6)
cur.execute("insert into test (arr) values (?)", (x, ))

#查詢數(shù)據(jù)
cur.execute("select arr from test")
data = cur.fetchone()[0]

print(data)
# [[ 0  1  2  3  4  5]
#  [ 6  7  8  9 10 11]]
print(type(data))
# <type 'numpy.ndarray'>

實例代碼看下Python 操作sqlite數(shù)據(jù)庫及保存查詢numpy類型數(shù)據(jù)

# -*- 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)

# 創(chuàng)建數(shù)據(jù)庫連接對象
conn = sqlite3.connect('sample_database.db', detect_types=sqlite3.PARSE_DECLTYPES)  # 連接到SQLite數(shù)據(jù)庫
'''
sqlite3.PARSE_DECLTYPES
本常量使用在函數(shù)connect()里,設(shè)置在關(guān)鍵字參數(shù)detect_types上面。表示在返回一行值時,是否分析這列值的數(shù)據(jù)類型定義。如果設(shè)置了本參數(shù),就進(jìn)行分析數(shù)據(jù)表列的類型,并返回此類型的對象,并不是返回字符串的形式。

sqlite3.PARSE_COLNAMES 
本常量使用在函數(shù)connect()里,設(shè)置在關(guān)鍵字參數(shù)detect_types上面。表示在返回一行值時,是否分析這列值的名稱。如果設(shè)置了本參數(shù),就進(jìn)行分析數(shù)據(jù)表列的名稱,并返回此類型的名稱
'''
# 參數(shù):memory:來創(chuàng)建一個內(nèi)存數(shù)據(jù)庫
# 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()
# 創(chuàng)建數(shù)據(jù)庫表
cursor.execute("create table test (arr array)")
# 插入一行數(shù)據(jù)
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()  # 關(guān)閉Cursor
conn.close()  # 關(guān)閉數(shù)據(jù)庫

以上就是python中sqllite插入numpy數(shù)組到數(shù)據(jù)庫的實現(xiàn)方法的詳細(xì)內(nèi)容,更多關(guān)于python numpy數(shù)組的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解讀MaxPooling1D和GlobalMaxPooling1D的區(qū)別

    解讀MaxPooling1D和GlobalMaxPooling1D的區(qū)別

    這篇文章主要介紹了MaxPooling1D和GlobalMaxPooling1D的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • matplotlib之Font family [‘sans-serif‘] not found的問題解決

    matplotlib之Font family [‘sans-serif‘] not&nbs

    本文主要介紹了matplotlib之Font family [‘sans-serif‘] not found的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python中內(nèi)置的日志模塊logging用法詳解

    Python中內(nèi)置的日志模塊logging用法詳解

    Python的logging模塊提供了記錄程序運行情況的日志功能,類似于Apache的log4j,很好很強(qiáng)大,這里我們就來看一下Python中內(nèi)置的日志模塊logging用法詳解
    2016-07-07
  • 3分鐘學(xué)會一個Python小技巧

    3分鐘學(xué)會一個Python小技巧

    Python時間日期轉(zhuǎn)換在開發(fā)中是非常高頻的一個操作,你經(jīng)常會遇到需要將字符串轉(zhuǎn)換成 datetime 或者是反過來將 datetime 轉(zhuǎn)換成字符串,今天小編給大家?guī)砹艘粋€Python小技巧,感興趣的朋友一起看看吧
    2018-11-11
  • python3.10及以上版本編譯安裝ssl模塊的詳細(xì)過程

    python3.10及以上版本編譯安裝ssl模塊的詳細(xì)過程

    最近搞安裝ssl模塊每天都弄到很晚,所以這里給大家整理下,這篇文章主要給大家介紹了關(guān)于python3.10及以上版本編譯安裝ssl模塊的詳細(xì)過程,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Python使用pymeter操作JMeter的教程詳解

    Python使用pymeter操作JMeter的教程詳解

    pymeter?是一個?Python?庫,它可以以編程方式創(chuàng)建和運行?JMeter?測試計劃,下面就跟隨小編一起來看看Python如何使用pymeter操作JMeter的吧
    2024-01-01
  • python 動態(tài)調(diào)用函數(shù)實例解析

    python 動態(tài)調(diào)用函數(shù)實例解析

    這篇文章主要介紹了python 動態(tài)調(diào)用函數(shù)實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Python實現(xiàn)LR1文法的完整實例代碼

    Python實現(xiàn)LR1文法的完整實例代碼

    這篇文章主要給大家介紹了關(guān)于Python實現(xiàn)LR1文法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Python畫圖常用命令大全(詳解)

    Python畫圖常用命令大全(詳解)

    這篇文章主要介紹了Python畫圖常用命令大全,內(nèi)容包括,matplotlib庫默認(rèn)英文字體,讀取exal方法,論文圖片的類型和格式,柱狀圖擴(kuò)展等知識,需要的朋友可以參考下
    2021-09-09
  • Python解析、提取url關(guān)鍵字的實例詳解

    Python解析、提取url關(guān)鍵字的實例詳解

    今天小編就為大家分享一篇Python解析、提取url關(guān)鍵字的實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12

最新評論