在Python中使用SQLite3,我试图存储一段UTF-8 HTML代码的压缩版本.
代码如下所示:
...
c = connection.cursor()
c.execute('create table blah (cid integer primary key,html blob)')
...
c.execute('insert or ignore into blah values (?, ?)',(cid, zlib.compress(html)))
Run Code Online (Sandbox Code Playgroud)
在这一点上得到错误:
sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
Run Code Online (Sandbox Code Playgroud)
如果我使用'text'而不是'blob'并且不压缩HTML片段,那么它可以很好地工作(尽管db很大).当我使用'blob'并通过Python zlib库压缩时,我收到上面的错误消息.我环顾四周,但找不到这个简单的答案.
我可以使用np.savez存储字典吗?结果令人惊讶(至少对我来说),我找不到通过密钥获取数据的方法.
In [1]: a = {'0': {'A': array([1,2,3]), 'B': array([4,5,6])}}
In [2]: a
Out[2]: {'0': {'A': array([1, 2, 3]), 'B': array([4, 5, 6])}}
In [3]: np.savez('model.npz', **a)
In [4]: a = np.load('model.npz')
In [5]: a
Out[5]: <numpy.lib.npyio.NpzFile at 0x7fc9f8acaad0>
In [6]: a['0']
Out[6]: array({'B': array([4, 5, 6]), 'A': array([1, 2, 3])}, dtype=object)
In [7]: a['0']['B']
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-16-c916b98771c9> in <module>()
----> 1 a['0']['B']
ValueError: field named B not found
In [8]: dict(a['0'])
---------------------------------------------------------------------------
TypeError Traceback …Run Code Online (Sandbox Code Playgroud) 您可以使用.tobytes()函数将numpy数组转换为字节。
如何将其从此字节数组解码回numpy数组?我尝试过这样的形状数组(28,28)
>>k=i.tobytes()
>>np.frombuffer(k)==i
False
也尝试过使用uint8。
将numpy整数对象的值插入到python 3中的数据库的正确方法是什么?在python 2.7中,numpy数值数据类型干净地插入到sqlite中,但它们不在python 3中
import numpy as np
import sqlite3
conn = sqlite3.connect(":memory:")
conn.execute("CREATE TABLE foo (id INTEGER NOT NULL, primary key (id))")
conn.execute("insert into foo values(?)", (np.int64(100),)) # <-- Fails in 3
Run Code Online (Sandbox Code Playgroud)
np.float类型在2和3中似乎仍然可以正常工作.
conn.execute("insert into foo values(?)", (np.float64(101),))
Run Code Online (Sandbox Code Playgroud)
在python 2中,numpy标量整数数据类型不再是int的实例,甚至将整数值浮点数转换为整数.
isinstance(np.int64(1), int) # <- true for 2, false for python 3
Run Code Online (Sandbox Code Playgroud)
这就是dbapi无法与numpy无缝协作的原因吗?
我的用例很简单,我在图像上执行了某种操作,结果特征向量是形状为rowX1000的numpy对象(我的意思是行号可以变化,但列号总是1000)
我想将这个numpy数组存储在mysql中.不对此阵列执行任何操作.给定图像名称返回整个特征向量,查询将很简单.那么有没有什么方法可以存储数组(类似于一个魔术容器,它封装了数组,然后把它放在桌子上,在检索时它检索魔术容器并弹出数组)
我想在python中这样做.如果可能支持使用短代码snippit如何将数据放入mysql数据库.
我想以二进制(bytea)形式将Numpy数组存储在PostgreSQL数据库中.我可以在测试#1(见下文)中正常工作,但我不想在插入之前和之后选择之后操作数据数组 - 我想使用psycopg2的适配器和转换器.
这就是我现在所拥有的:
import numpy as np
import psycopg2, psycopg2.extras
def my_adapter(spectrum):
return psycopg2.Binary(spectrum)
def my_converter(my_buffer, cursor):
return np.frombuffer(my_buffer)
class MyBinaryTest():
# Connection info
user = 'postgres'
password = 'XXXXXXXXXX'
host = 'localhost'
database = 'test_binary'
def __init__(self):
pass
def set_up(self):
# Set up
connection = psycopg2.connect(host=self.host, user=self.user, password=self.password)
connection.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)
cursor = connection.cursor()
try: # Clear out any old test database
cursor.execute('drop database %s' % (self.database, ))
except:
pass
cursor.execute('create database %s' % (self.database, ))
cursor.close()
connection.close()
# Direct …Run Code Online (Sandbox Code Playgroud) 使用 Python 处理现有记录中的字段UPDATE的语法是什么?我创建了一个 13x13 浮点数组,并希望使用该数组更新表中的特定记录(即使用子句)。BLOBSQLiteWHERE
正确的语法是什么UPDATE?
该数组具有以下形式:
[ 4.65640926e+00 5.59250259e+00 5.28963852e+00 1.60680866e+00
-3.39492680e-01 -4.76834650e-01 -4.76834650e-01 -2.29132240e-01
1.49733067e+00 1.51563072e+00 1.49733067e+00 9.53471420e-01
-1.40306473e+00]
[ 5.28963852e+00 5.34537315e+00 5.05013466e+00 1.48362923e+00
-3.69843300e-01 -4.76834650e-01 -4.76834650e-01 -2.29132240e-01
7.60705290e-01 1.49733067e+00 9.53471420e-01 3.05504260e-01
-1.40306473e+00]
Run Code Online (Sandbox Code Playgroud)
总共 13 行,每行 13 个子阵列。
谢谢你,比尔
python ×7
numpy ×4
sqlite ×3
arrays ×2
python-3.x ×2
blob ×1
dictionary ×1
mysql ×1
postgresql ×1
psycopg2 ×1
save ×1
sql-update ×1
unicode ×1
zlib ×1