免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5517 | 回复: 14
打印 上一主题 下一主题

关联数据表-插入数据问题。谢谢大家 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-10 13:54 |只看该作者 |倒序浏览
我没多少分了。等我有分了会大家的。。

在Django的模型中创建关联数据库如下:
class Addres(models.Model):
    Hours_id = models.IntegerField(decode('房源ID'))
    Address = models.CharField(decode('地区名称'),max_length=1000)
    Url = models.SlugField(decode('URL地址'))

# 房源信息表
class Hours(models.Model):
    ProvinceID = models.IntegerField(decode('省Id'))
    CityID = models.IntegerField(decode('城市Id'))   
    CountyID = models.IntegerField(decode('区县ID'))   
    Title = models.CharField(decode('房源标题'),max_length=500)
    Url = models.SlugField(decode('URL地址'))
    # 房源有多个地址信息
    Addres = models.ManyToManyField(Addres,verbose_name=decode('区域信息'))
    Floor = models.CharField(decode('楼层'),max_length=200)
    Acreage = models.IntegerField(decode('面积'))
    Price = models.IntegerField(decode('价格'))
    Rooms = models.CharField(decode('居室'),max_length=200)
    SourceWeb = models.CharField(decode('来源网站'),max_length=200)
    PublishTime = models.DateTimeField(decode('发布时间'))

当我单独像数据库里插入数据(注:不是用django往里插入数据,而是单独访问数据库来插入数据)
如何处理这种关联插入呢。
也就是说我要在插入主表以后,再查询出插入的Id,然后再插入关联表,然后再取出关联表Id,最后在将这两个表的ID插入到
中间表中,这样的话太复杂了,这一点Django处理的很好,但我不知道他是如何实现的。
请大家帮忙看看,我该如何实现而不是像我上边说的那样 就太复杂了。。。

谢谢

[ 本帖最后由 jiangnanandi 于 2009-3-10 14:02 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-03-10 14:02 |只看该作者
版主老大,帮忙看看。。多谢了

论坛徽章:
0
3 [报告]
发表于 2009-03-10 14:29 |只看该作者
没明白,几个id是同一个还是不同的?

[ 本帖最后由 luffy.deng 于 2009-3-10 14:35 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-03-10 14:36 |只看该作者
看你的思路既然已经理清了,虽然有点烦,就那么做把。这样也好理解,一步步插入,然后读取插入后的id
如果你有兴趣可以看下django里orm部分是怎么处理的,偶没用过dj :)

论坛徽章:
0
5 [报告]
发表于 2009-03-10 14:42 |只看该作者
可以用触发器。

论坛徽章:
0
6 [报告]
发表于 2009-03-10 14:48 |只看该作者
谢谢指导,
我还有一个问题就是
我这里是sqlite数据库
conn = sqlite.connect(osp.abspath('./fangjia.db'))
conn.text_factory = str
c = conn.cursor()
c.execute('''INSERT INTO [Hours]([ProvinceID],[CityID],[CountyID],[Title],\
                [Url],[Price],[Rooms],[SourceWeb],[PublishTime])VALUES(?,?,?,?,?,?,?,?,?);''',\
                        (ProvinceID,CityID,CountyID,db_title,db_title_url,db_Price\
                        ,db_room,website,db_date,))
执行完这里后,如何获得 这条数据的ID
看上边 我没有显式的插入ID字段,ID是主键,自增的。如果这个问题解决不了,我还真得研究django的ORM了

论坛徽章:
0
7 [报告]
发表于 2009-03-10 14:57 |只看该作者
sqlite没玩过  select max(id) 行不行?

论坛徽章:
0
8 [报告]
发表于 2009-03-10 15:00 |只看该作者
select last_insert_rowid();

论坛徽章:
0
9 [报告]
发表于 2009-03-10 15:03 |只看该作者
原帖由 xiaoyu9805119 于 2009-3-10 15:00 发表
select last_insert_rowid();

row_id跟自增字段是一样的?

论坛徽章:
0
10 [报告]
发表于 2009-03-10 15:25 |只看该作者

回复 #9 luffy.deng 的帖子

last_insert_rowid返回的就是最后的id,跟自增的一样啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP