小白跪求解答

达瓦里氏吨吨吨 2014-12-21 01:03:19
在写一个银行账户管理系统的小软件,用的是python和sqlite3的组合。
因为生成账户需要随机生成数,查找一番后发现有一个integer primary key的东西刚好符合要求,于是就拿来用。
但是在建好数据库后,随后的输入,自动生成的全为none,这个有很大问题,与生成随机数要求不符,现在求大神指导。
dataa = dbapi2.connect("D:\python\untitled001\mydata.db")
dataa.isolation_level = None
sql = "create table if not exists t1(a0 INTEGER PRIMARY KEY ,a1 varchar,a2 varchar,a3 integer,a4 integer,a5 real,a6 real) "
dataa.execute(sql)
cur = dataa.cursor()
cur.execute("INSERT INTO t1 VALUES (?,?,?,?,?,?,?)", (0, 0, 0, 0, 0, 0, 0))
cur.close()
dataa.commit()
dataa.close()
这一部分拿来建立了数据库。
cur.execute("INSERT INTO t1 VALUES (NULL,?,?,?,?,?,?)", (ak[1], ak[2], ak[3], ak[4], ak[5], ak[6]))
temp = ak[3]
ak = list(cur.execute('SELECT * FROM t1 WHERE a3=?', temp))
dataa.commit()
dataa.close()

这一部分想向里边写入用户记录,但是生成的随机数全为none,好郁闷。
...全文
149 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
panghuhu250 2014-12-22
  • 打赏
  • 举报
回复
或者维护一个可用帐号的列表, 需要时从中随机抽取. 另外, sqlite帮你产生的key是顺序递增的, 不是随机的. From http://www.sqlite.org/faq.html#q1: Short answer: A column declared INTEGER PRIMARY KEY will autoincrement.
angel_su 2014-12-22
  • 打赏
  • 举报
回复
随机数没保证不重复,不过数据库里主键是保证不重复,所以容错处理一下,一旦插入失败就换一个随机数再试试...
  • 打赏
  • 举报
回复
引用 1 楼 panghuhu250 的回复:
[quote=引用 楼主 fantacy10000 的回复:] 在写一个银行账户管理系统的小软件,用的是python和sqlite3的组合。 因为生成账户需要随机生成数,查找一番后发现有一个integer primary key的东西刚好符合要求,于是就拿来用。
integer primary key和随机数生成完全没关系. python有random模块可以生成随机数.

In [152]: import random

In [153]: random.randint?
Type:        instancemethod
String form: <bound method Random.randint of <random.Random object at 0x184c550>>
File:        /usr/lib/python2.7/random.py
Definition:  random.randint(self, a, b)
Docstring:
Return random integer in range [a, b], including both end points.
        
In [154]: print [random.randint(1, 20) for i in range(50)]
[5, 8, 11, 1, 10, 20, 11, 5, 4, 19, 19, 16, 10, 4, 19, 10, 9, 9, 18, 11, 13, 16, 17, 6, 6, 8, 9, 7, 12, 2, 5, 10, 4, 8, 20, 14, 13, 19, 14, 18, 10, 7, 19, 2, 15, 17, 3, 17, 8, 20]

In [155]: print [random.random() for i in range(50)]
[0.32714454258913284, 0.6600387887343986, 0.40965648271787614, 0.39746010397951537, 0.49007253613163304, 0.701296102486718, 0.7877594056581568, 0.7765695549351227, 0.677367997801803, 0.39096549751623566, 0.15546571712062607, 0.6625105579607542, 0.427535957897057, 0.6969279207754262, 0.44839664721348815, 0.889611649261369, 0.5192255004309192, 0.7145579307406654, 0.8467265651683934, 0.27752510894748783, 0.608955222250574, 0.6665589479385633, 0.7972219568566848, 0.6123503875771376, 0.18018903100999828, 0.08792359340257605, 0.5569095839998437, 0.3699317201053566, 0.20967664695522492, 0.9788641624978259, 0.46066836701170255, 0.3921248513088468, 0.29577166134239186, 0.8399071058146224, 0.4641016682462936, 0.9955261226313651, 0.3287572960350237, 0.7207123429186846, 0.986820571531629, 0.8161020151950433, 0.36856525163201603, 0.9383479854105999, 0.42917699861899894, 0.1425824023919985, 0.22087932932867815, 0.7617388826456519, 0.42763595788629916, 0.5390004354641537, 0.2744073465429723, 0.34365247273336597]

[/quote] 但是可以看见会出现重复的问题啊,这个正是问题所在呢。
  • 打赏
  • 举报
回复
但是可以看见会出现重复的问题啊,这个正是问题所在呢。
panghuhu250 2014-12-21
  • 打赏
  • 举报
回复
引用 楼主 fantacy10000 的回复:
在写一个银行账户管理系统的小软件,用的是python和sqlite3的组合。 因为生成账户需要随机生成数,查找一番后发现有一个integer primary key的东西刚好符合要求,于是就拿来用。
integer primary key和随机数生成完全没关系. python有random模块可以生成随机数.

In [152]: import random

In [153]: random.randint?
Type:        instancemethod
String form: <bound method Random.randint of <random.Random object at 0x184c550>>
File:        /usr/lib/python2.7/random.py
Definition:  random.randint(self, a, b)
Docstring:
Return random integer in range [a, b], including both end points.
        
In [154]: print [random.randint(1, 20) for i in range(50)]
[5, 8, 11, 1, 10, 20, 11, 5, 4, 19, 19, 16, 10, 4, 19, 10, 9, 9, 18, 11, 13, 16, 17, 6, 6, 8, 9, 7, 12, 2, 5, 10, 4, 8, 20, 14, 13, 19, 14, 18, 10, 7, 19, 2, 15, 17, 3, 17, 8, 20]

In [155]: print [random.random() for i in range(50)]
[0.32714454258913284, 0.6600387887343986, 0.40965648271787614, 0.39746010397951537, 0.49007253613163304, 0.701296102486718, 0.7877594056581568, 0.7765695549351227, 0.677367997801803, 0.39096549751623566, 0.15546571712062607, 0.6625105579607542, 0.427535957897057, 0.6969279207754262, 0.44839664721348815, 0.889611649261369, 0.5192255004309192, 0.7145579307406654, 0.8467265651683934, 0.27752510894748783, 0.608955222250574, 0.6665589479385633, 0.7972219568566848, 0.6123503875771376, 0.18018903100999828, 0.08792359340257605, 0.5569095839998437, 0.3699317201053566, 0.20967664695522492, 0.9788641624978259, 0.46066836701170255, 0.3921248513088468, 0.29577166134239186, 0.8399071058146224, 0.4641016682462936, 0.9955261226313651, 0.3287572960350237, 0.7207123429186846, 0.986820571531629, 0.8161020151950433, 0.36856525163201603, 0.9383479854105999, 0.42917699861899894, 0.1425824023919985, 0.22087932932867815, 0.7617388826456519, 0.42763595788629916, 0.5390004354641537, 0.2744073465429723, 0.34365247273336597]

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧