Oracle数据库是商业软件,封闭的东西,折腾是难免的。
即使有Python接口,也是依赖Oracle原生类库的。
目前比较流行的Python访问Oracle的接口是:cx Oracle
1、安装instantclient
地址参考之前的一篇文章:《Linux下配置OCI(Oracle调用接口)》
以我的10g为例子,需要下面两个文件:
sdk-10.2.0.5.0-linux-x64.zip 需要这之中的include头文件
basiclite-10[......]
Oracle数据库是商业软件,封闭的东西,折腾是难免的。
即使有Python接口,也是依赖Oracle原生类库的。
目前比较流行的Python访问Oracle的接口是:cx Oracle
1、安装instantclient
地址参考之前的一篇文章:《Linux下配置OCI(Oracle调用接口)》
以我的10g为例子,需要下面两个文件:
sdk-10.2.0.5.0-linux-x64.zip 需要这之中的include头文件
basiclite-10[......]
我们要的是一个可读的字符串,因此os.urandom这种是不靠谱的。
[python]
#生成一个Population
pop = [chr(i) for i in xrange(33, 126 + 1)]
#sample随机选取,然后再Join
print "".join(random.sample(pop, 64))
[/python][......]
Sqlite3的数据库,在删除数据时并不会回收空间,因此Sqlite3提供了一个特殊操作:VACUUM,调用它,我们可以压缩数据库。
当然,在Python中压缩也是非常简单的。
[python]
def compact_sqlite3_db():
try:
conn = sqlite3.connect(SQLITE_FILE)
conn.execute("VACUUM")
conn.close()[......]
#设a为字符串
import time
a = "2011-09-28 10:00:00"
#中间过程,一般都需要将字符串转化为时间数组
time.strptime(a,'%Y-%m-%d %H:%M:%S')
>>time.struct_time(tm_year=2011, tm_mon=9, tm_mday=27, tm_hour=10, tm_min=50, tm_sec=0, tm_wday=1, tm_yday=270, tm_isdst=-1)
#将"[......]
真的是内牛满面啊,虽然4个月前就开始用gevent,但是直到今天才知道到底怎么才能设置gevent(含monkey打patch后)的超时!!
官方文档太坑爹了,在很隐藏的一个角落里才发现这么一个类gevent.Timeout。
事情是这样的:我们常用的socket都是阻塞的,那么超时是很好设置的。但是,用过Linux下非阻塞I/O的都知道,非阻塞情况下,设置连接超时神马都是浮云的,因为人家是非阻塞的……
于是,当我们用monkey.patch_all()之后,所有的socket[......]