PostgreSQL数据库创建多字段表以及插入多行数据

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PostgreSQL数据库创建多字段表以及插⼊多⾏数据
今天开始记录做毕设遇到的⼀些问题,毕设做⼀个C/S架构的⾳乐播放器,主要特点是实现⾳乐推荐功能,前段时间做了⼀点了,从今天开始记。

今天的⼩任务是创建⼀个数据库表musicdata,记录⽤户对⾳乐的打分,作为推荐系统计算的数据来源。

表是这样的:
userid song1song2......
user1
user2
...
以前没有⽤过像样的数据库,只在学习Python时⽤过sqlite,关系数据库⽬前同学中貌似⽤Mysql的⽐较多,图书馆资料也⽐较
多,Google⼀下据说PostgreSQL⽐MySQL更好,就⽤这个吧。

毕业设计不要做的多好,暂定系统⾥有1000⾸⾳乐,于是这个表要有1001个字段,看起来静态语⾔SQL命令是不太合适,由于以前没接触过动态SQL语句,⼀看就头⼤,找了⼀个⼩时也没找到合适的资料。

⽤Python写个脚本,⽣成部分静态SQL命令,再放到⼤象的⿐⼦(PgAdminⅢ)⾥,⼀个1001个字段的表就建成了。

Python代码:
1 file=open(r'D:\hello.txt','w')
2for i in range(1000):
3 s='song'+str(i+1)+' float,'+'\n'
4 file.write(s)
5 file.close()
这个脚本很简单,但是Python就是拿来帮我们简单的完成⼀些简单的任务,⽐如这个毕业设计,哈哈。

第⼀个问题解决了,第⼆个问题就是插⼊数据了。

表中⼀个⽤户占⼀⾏,userid是key,后⾯对应的是该user_i对song_j的打分。

毕设嘛,简单点,先弄1000个⽤户,只要insert1000下就好,这有点⿇烦。

⼀查,可以COPY,从⽂本⽂档中将数据copy到数据表⾥。

现在问题就是⽤Python把数据存到txt⾥。

这⾥数据⽤随机数表⽰吧,还没找真实数据。

1import random
2
3def blankReplace(a):
4 s=str(a)[1:-1]
5while(s.find('')!=-1):
6 s=s.replace('','')
7return s
8
9 file=open(r'E:\rand_data.txt','w')
10for j in range(1000):
11 data=[random.randint(0,3) for i in range(1000)]
12 strdata=blankReplace(data)
13 file.write('user'+str(j+1)+','+strdata+'\n')
14 file.close()
这样数据就跑到rand_data.txt⾥去了,只要使⽤SQL COPY语句就可以把数据COPY到表⾥去。

1 COPY musicdata FROM'E:\rand_data.txt' DELIMITER ',';
PostgreSQL据说是个极好的关系型数据库,但是⽤在像我毕业设计这种⼩问题上的时候我感觉不是特别⽅便,尤其是动态SQL语句实在是⿇烦。

在查资料的时候我粗略看了⼀下最近有点⽕的NoSQL,我觉得基于Key-Value的数据结构可以很好的应⽤在我的问题上,于是我决定做完毕设之后要学习⼀种NoSQL,Redis或者MongoDB吧。

今天的任务就是这些,看上去相当简单,但是在过程中还是有些收获的。

⾄少我更爱Python了⼀点,还有我决定暑假学习NoSQL。

相关文档
最新文档