1
oldgun OP 有人愿意看一下吗?
|
2
keakon 2011 年 3 月 25 日
可以试试generator
http://www.python.org/dev/peps/pep-0289/ from datetime import date def number_generator(type_number): last_day = date.today() number = 0 while True: today = date.today() if last_day == today: number += 1 else: last_day = today number = 1 yield '%s%s%03d' % (type_number, today.strftime('%Y%m%d'), number) generator = number_generator('01') print generator.next() print generator.next() print generator.next() print generator.next() 结果: 0120110325001 0120110325002 0120110325003 0120110325004 |
3
oldgun OP @keakon 谢谢!
不过忘了关键点了,补充一下,在分布式和并发环境下如何保证编号的连续及唯一呢?想过利用数据库的sequence 但最好不要。用锁吗? |
5
oldgun OP @keakon 因为想用sqlite或Berkeleydb,数据库层面实现很基本无望。oracle的sequence应该可以,不过高并发下恐怕效率会很低。初步想建一个带锁机制的服务来解决了。
|
6
summic 2011 年 3 月 25 日
唯一性的问题,存数据库,然后实现一个乐观锁就行了
|
9
napoleonu 2011 年 3 月 25 日
编号为什么一定要连续呢?
|
13
Kymair 2011 年 3 月 26 日 via Android
可以考虑下Redis
自增和自减是原子的 经常被拿来做id generator |