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

  今天开始记录做毕设遇到的一些问题,毕设做一个C/S架构的音乐播放器,主要特点是实现音乐推荐功能,前段时间做了一点了,从今天开始记。

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

  表是这样的:

useridsong1song2......
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')
2 for 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里。

  这里数据用随机数表示吧,还没找真实数据。

 1 import random
 2 
 3 def blankReplace(a):
 4     s=str(a)[1:-1]
 5     while(s.find(' ')!=-1):
 6         s=s.replace(' ','')
 7     return s
 8 
 9 file=open(r'E:\rand_data.txt','w')
10 for 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。

posted on 2014-04-19 16:48  jzzlee 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/jzzlee/p/music_data.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值