当前位置:首页 » 编程语言 » pythongdbm

pythongdbm

发布时间: 2022-12-31 08:51:44

‘壹’ windows环境下,使用python,无法查看部分命令的帮助文档,无法import部分包

重装python应该可以解决这个问题

重新安装python
1、 在上次进行安装python的时候,很多东西不能用,例如后退键,删除键,都是不能在命令行中使用,主要原因是在编译python的时候,相关的安装包没有进行安装,从而导致出现乱码,在编译最新版本的python之后,可以看到如下的信息:

Python build finished, but the necessary bits to build these moles were not found:
_bsddb _curses _curses_panel
_sqlite3 _ssl _tkinter
bsddb185 bz2 dbm
dl gdbm imageop
readline sunaudiodev zlib
To find the necessary bits, look in setup.py in detect_moles() for the mole's name

表示在进行编译python的时候,这些包不能被安装,因为在系统中,缺少相关的依赖项,从而需要在系统中安装相应的包,然后进行重新编译安装python。

2、 包的信息如下所示:--模块及依赖说明为网络参考,未加考证

模块 依赖 说明
_bsddb bsddb Interface to Berkeley DB library。Berkeley数据库的接口
_curses ncurses Terminal handling for character-cell displays。
_curses_panel ncurses A panel stack extension for curses。
_sqlite3 sqlite DB-API 2.0 interface for SQLite databases。SqlLite,CentOS可以安装sqlite-devel
_ssl openssl-devel.i686 TLS/SSL wrapper for socket objects。
_tkinter N/A a thin object-oriented layer on top of Tcl/Tk。如果不使用桌面程序可以忽略TKinter
bsddb185 old bsddb mole 老的bsddb模块,可忽略。
bz2 bzip2-devel.i686 Compression compatible with bzip2。bzip2-devel
dbm bsddb Simple “database” interface。
dl N/A Call C functions in shared objects.Python2.6开始,已经弃用。
gdbm gdbm-devel.i686 GNU’s reinterpretation of dbm
imageop N/A Manipulate raw image data。已经弃用。
readline readline-devel GNU readline interface
sunaudiodev N/A Access to Sun audio hardware。这个是针对Sun平台的,CentOS下可以忽略
zlib Zlib Compression compatible with gzip

从而需要进行安装的依赖包未readline-devel,sqlite-devel,bzip2-devel,openssl-devel,libdbi-devel,
ncurses-devel,zlib-devel,gdbm-devel,注意在进行安装的时候,也要安装不加devel的包文件

在安装了这些包之后,必须重新进行编译python,然后重新进行安装。

3、 在重新安装完成之后,即可进行相关测试,进入python的命令行环境,然后进行测试后退键,删除键,看是否存在乱码,乱码这个主要是因为readlinedevel未进行安装。

‘贰’ 请教,ubuntu10.04下,如何卸载python2.7.8

代码:
$ ./configure --prefix=/usr/include
$ make
$ sudo checkinstall

然后,python2.7文件夹出现在/usr/include/bin、/usr/include/liclude和/usr/include/lib中,

输入

代码:
$ python --version
python 2.6.5

但是,却出现如下提示:
[text]
$ sudo apt-get autoremove
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
您也许需要运行“apt-get -f install”来修正上面的错误。
下列软件包有未满足的依赖关系:
command-not-found: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
computer-janitor: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
computer-janitor-gtk: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
gdebi: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
gdebi-core: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
jockey-common: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
lsb-release: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
nvidia-common: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-appindicator: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-apport: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-apt: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-aptdaemon: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-aptdaemon-gtk: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-brlapi: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-cairo: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-crypto: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-cups: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-dbus: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-egenix-mxdatetime: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-egenix-mxtools: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-farsight: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-gconf: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-gdbm: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-glade2: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-gmenu: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-gnome2: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-gnomeapplet: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-gnomecanvas: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-gnomekeyring: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-gobject: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-gst0.10: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-gtk2: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-gtksourceview2: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-gtkspell: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-imaging: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-indicate: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-launchpad-integration: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-libxml2: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-newt: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-notify: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-openssl: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-pam: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-pkg-resources: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-problem-report: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-pycurl: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-pygoocanvas: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-pyorbit: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-rdflib: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-setuptools: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-simplejson: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-smbc: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-software-properties: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-twisted-bin: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-twisted-core: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-virtkey: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-vte: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-webkit: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-wnck: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-xapian: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
python-zope.interface: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
screen-resolution-extra: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
software-properties-gtk: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
ufw: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
update-manager: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装
update-manager-core: 依赖: python (< 2.7) 但是 2.7.8-1 已经安装

‘叁’ 如何持久化python对象

1. 使用(dbhash/bsddb, dbm, gdbm, mbdbm 等)以及它们的"管理器"( anydbm )。只提供了 Python 字符串的永久性储存. 提供一个类似字典和文件的对象,可以完成字符串的永久性存储
2. 使用marshal和pickle来序列化python对象,并具备存储到介质上的功能。两者的区别在于:marshal只能处理简单的Python对象,包括数字、序列、映射、以及代码对象;而pickle还可以处理递归对象,被不同地方多次引用的对象,以及用户定义的类和实例。其中,pickle有一个C语言实现的版本——cPickle,具有更高的效率,建议使用cPickle。
3. 虽然pickle提供非常强大的功能了,已经可以满足我们大部分的需求了,但是,人类的需求是无止境的,光序列化不行啊,只用 pickle 不能解决命名和查找 pickle 文件这样的问题,要是可以对序列化的对象提供管理功能,支持并发访问就好了。因此,人们发明了shelve模块,它是前两者的综合。shelve模块使用anydbm模块寻找合适的DBM模块,然后使用cPickle来完成对象存储转换过程。shelve模块允许对数据库文件进行并发的读访问,但不允许共享读/写访问。
4. 还有一种方案,是在IBM的网站上看到的。那就是ZODB了。ZODB比简单的 pickle 文件更健壮以及更具有可伸缩性。ZODB是一个针对Python的Z对象数据库,是一个健壮的、多用户的和面向对象的数据库系统,它能够存储和管理任意复杂的 Python 对象,并支持事务操作和并发控制。其实,ZODB也依靠Python 的本机序列化能力,而且要有效地使用 ZODB,必须充分了解 pickle。
5. 最后一只知道的解决持久性问题的方法是 Prevayler,PyPerSyst 将整个对象系统保存在内存中,并通过不时地将系统快照 pickle 到磁盘以及维护一个命令日志(通过此日志可以重新应用最新的快照)来提供灾难恢复。所以,尽管使用 PyPerSyst 的应用程序受到可用内存的限制,但好处是本机对象系统可以完全装入到内存中,因而速度极快,而且实现起来要比如 ZODB 这样的数据库简单,ZODB 允许对象的数目比同时在能内存中所保持的对象要多。

‘肆’ python fetchone 取出的数据是什么类型

举例,首先看了pymysql里面的cursor类,关于execute、fetchone和fetchall定义如下:
#调用self._query方法进行查询
def execute(self, query, args=None):
"""Execute a query
:param str query: Query to execute.
:param args: parameters used with query. (optional)
:type args: tuple, list or dict
:return: Number of affected rows
:rtype: int
If args is a list or tuple, %s can be used as a placeholder in the query.
If args is a dict, %(name)s can be used as a placeholder in the query.
"""
while self.nextset():
pass
query = self.mogrify(query, args)
result = self._query(query)
self._executed = query
return result
#调用_do_get_result获取查询结果
def _query(self, q):
conn = self._get_db()
self._last_executed = q
self._clear_result()
conn.query(q)
self._do_get_result()
return self.rowcount
#这里获取结果
def _do_get_result(self):
conn = self._get_db()
self._result = result = conn._result
self.rowcount = result.affected_rows
self.description = result.description
self.lastrowid = result.insert_id
self._rows = result.rows
self._warnings_handled = False

if not self._defer_warnings:
self._show_warnings()
其实看到这里代码逻辑已经很清楚了,在调用cursor.execute执行SQL的时候,就将MySQL查询的结果放到result这个变量里了,也就是说结果集放到了客户端的内存变量里,那么获取数据的方式也就是从这个内存变量里去获取数据,只是获取的行为有所不同而已了。
def fetchone(self):
"""Fetch the next row"""
self._check_executed()
if self._rows is None or self.rownumber >= len(self._rows):
return None
result = self._rows[self.rownumber]
self.rownumber += 1
return result

def fetchmany(self, size=None):
"""Fetch several rows"""
self._check_executed()
if self._rows is None:
return ()
end = self.rownumber + (size or self.arraysize)
result = self._rows[self.rownumber:end]
self.rownumber = min(end, len(self._rows))
return result
def fetchall(self):
"""Fetch all the rows"""
self._check_executed()
if self._rows is None:
return ()
if self.rownumber:
result = self._rows[self.rownumber:]
else:
result = self._rows
self.rownumber = len(self._rows)
return result
口说无凭,我们直接通过Wireshark抓包来证明一下,首先我在本地执行脚本如下,然后我监听本地的网卡流量
import pymysql
conn = pymysql.connect(host='xxx', port=3306,
user='xucl', password='xuclxucl', database='xucl')
cursor = conn.cursor()
cursor.execute("select * from t")
注意,我这里并没有执行fetch操作,如果监听到的包里面包含了结果,那么就证明我们前面的分析是正确的,话不多说开始实验,Wireshark抓包如下:
果然跟我们之前的预测是一致的,即使没有进行fetch操作,MySQL也将结果集发送到客户端了。另外关于结果集发送,可以参考我另外一篇文章:《由一个抓瞎的SQL引申出去》

结论:
客户端执行SQL的时候,MySQL一次性将结果集发送给了客户端
客户端接收到结果集以后存储本地内存变量中
fetch结果只是从这个本地变量中获取,fetchone/fetchmany/fetchall只是获取行为的不通,因此对于MySQL来说并没有什么不通的。

‘伍’ python的数据类型

>>>>请问如何来暂时保存这些数据?如何使用这些数据?
不太确定理解了你的问题:
1 你是根据数据库来进行语句分割,评价分析的吗。
如果是的话,那就把分析结果存到字典里就可以了。(也就是你说的保存)
使用呢,就是对这个字典进行判断处理。
2 如果不是的话,你是想收集语料库放到字典里,然后再利用这个字典对象去判断?
保存大词典对象的话可以用gdbm来读写。

热点内容
安卓十二系统什么时候更新 发布:2025-07-02 00:12:28 浏览:345
shell脚本需要编译链接 发布:2025-07-02 00:04:20 浏览:474
微信如何重设密码 发布:2025-07-02 00:02:27 浏览:545
java代码基础 发布:2025-07-02 00:00:46 浏览:304
烟花的代码c语言 发布:2025-07-01 23:56:04 浏览:224
安卓默认打开文件方式怎么修改 发布:2025-07-01 23:30:38 浏览:862
压缩机接线座 发布:2025-07-01 23:17:48 浏览:664
iqoo浏览器缓存路径 发布:2025-07-01 23:12:38 浏览:693
明日之后如何获得最新服务器 发布:2025-07-01 23:12:35 浏览:52
tv加密频道 发布:2025-07-01 23:10:58 浏览:625