python訪問ZODB資料庫

2021-05-27 04:41:44 字數 2094 閱讀 4589

#!/usr/bin/python2.4

# myzodb.py

import sys

import os

from zodb import filestorage

from zodb import db

import transaction

class myzodb(object):

def __init__(self, path):

self.storage = filestorage.filestorage(path)

self.db = db(self.storage)

self.connection = self.db.open()

self.dbroot = self.connection.root()

def close(self):

self.connection.close()

self.db.close()

self.storage.close()

from myzodb import myzodb

if __name__ == '__main__':

#fetch_******.py

db = myzodb('/opt/data.fs')

dbroot = db.dbroot

for key in dbroot.keys():

print key + ':',dbroot[key]

db.close()

執行的使用出錯了:

[root@localhost python]# ./myzodb.py

traceback (most recent call last):

file "./myzodb.py", line 5, in ?

from zodb import filestorage

file "/opt/plone-2.5/lib/python/zodb/__init__.py", line 20, in ?

from persistent import timestamp

file "/opt/plone-2.5/lib/python/persistent/__init__.py", line 19, in ?

from cpersistence import persistent, ghost, uptodate, changed, sticky

importerror: /opt/plone-2.5/lib/python/persistent/cpersistence.so: undefined symbol: pyunicodeucs2_asencodedstring

上網查詢發現是由於我本機的python是4位元組的unicode,而plone中定義的函式介面是針對2位元組的unicode的,所以我就重新編譯了本機的python-2.4.3

./configure --enable-unicode=ucs2 --prefix=$py_home --with-readline --with-zlib

make

make install

為了確定我使用的python是2位元組的,我這麼測試的:

[root@localhost bin]# /opt/plone-2.5/python-2.4.3/bin/python

python 2.4.3 (#1, aug 4 2011, 14:59:31)

[gcc 4.1.2 20080704 (red hat 4.1.2-50)] on linux2

>>> import sys

>>> print sys.maxunicode

65535

返回值=1114111     ucs-4

返回值=65535          ucs-2

編譯之後的python的確是ucs-2的了,但是將myzodb.py程式的地一句話修改為:

#!/opt/plone-2.5/python-2.4.3/bin/python

之後再執行./myzodb.py依然出現同樣的錯誤。崩潰了

怎麼辦?

python 訪問資料庫

commit 提交 rollback 回滾 cursor用來執行命令的方法 callproc self,procname,args 用來執行儲存過程,接收的引數為儲存過程名和引數列表,返回值為受影響的行數 execute self,query,args 執行單條sql語句,接收的引數為sql語句本身...

訪問資料庫 訪問資料庫

程式執行的時候,資料都是在記憶體中的。當程式終止的時候,通常都需要將資料儲存到磁碟上,無論是儲存到本地磁碟,還是通過網路儲存到伺服器上,最終都會將資料寫入磁碟檔案。而如何定義資料的儲存格式就是乙個大問題。如果我們自己來定義儲存格式,比如儲存乙個班級所有學生的成績單 名字成績 michael99 bo...

Python訪問SQL Server資料庫

1 有兩個python的sqlserver驅動,乙個是pyodbc 另外乙個是pymssql,選擇期中的乙個即可以,然後配置你的開發環境。pip install pymssql即可安裝pymssql庫。備註 安裝的過程中可能會出現找不到sqlfront.h檔案的錯誤。如果是linux平台,直接安裝f...