用户
搜索
  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 160 天

    连续签到: 1 天

    [LV.7]常住居民III

    版主

    pypy

    Rank: 7Rank: 7Rank: 7

    21

    主题

    651

    帖子

    1745

    魔法币
    收听
    3
    粉丝
    19
    注册时间
    2015-11-12

    签约作者

    发表于 2017-4-15 13:09:29 919649
    本帖最后由 xiaoye 于 2017-4-15 13:11 编辑

    说明:本文不是0基础文,需要有些python和Django基础

    话说,,是不是没多少人学Django啊,,https://bbs.ichunqiu.com/thread-21706-1-1.html 都没人回,贼尴尬。。看的人不多我以后就不更Django了,写点别的
    这次分享一个Django小脚本,批量导入数据的,不需要一条一条.objects.get_or_create()
    我的models.py里是这样的,新建了一个类:
    [Python] 纯文本查看 复制代码
    class users(models.Model):
            name = models.CharField(max_length=30)
            age = models.IntegerField()
            
            def __unicode__(self):
                    return self.name


    为了演示,当然要先生成一些数据,人懒不想手动敲数据,写个脚本自己生成数据好了

    [Python] 纯文本查看 复制代码
    #coding: utf-8
    global n
    n = 1
    def main():
            demo = 'qwertyuiopasdfghjklzxcvbnm'
            li = list(demo)
            for i in li:
                    global n
                    print i + '**' + str(n)
                    n = n + 1
    if __name__ == '__main__':
            main()

    数据生成好了
                                                                                         dic.PNG

    写个脚本,利用.objects.bulk_create()批量导入数据

    [Python] 纯文本查看 复制代码
    #coding: utf-8
    import os
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "demo.settings")
    import django
    django.setup()
            
    def main():
            from blog.models import users
            li = []
            with open('db.txt','r') as f:
                    for db in f.readlines():
                            db = db.strip('\n')
                            dbl = db.split('**')
                            li.append(users(name=dbl[0],age=int(dbl[1])))
                            
            users.objects.bulk_create(li)
    
    if __name__ == '__main__':
            main()
            print 'data import ok'

    运行之后python manage.py shell,然后查看数据是否已经导入
                                                                                         dbpy.PNG
    ok,应该是导入好了,但是这样看起来很费劲,我们来写个可视化的html来显示数据:
    首先在views.py,视图里面写上一个渲染html页面的函数:
    [Python] 纯文本查看 复制代码
    def user_show(request):
            user_list = blog_models.users.objects.all()
            return render(request, 'blog/user_show.html', {'user_list':user_list})


    views.PNG
    html页面:
    [HTML] 纯文本查看 复制代码
    <html>
    <head>
    <title>django sqlite3 show</title>
    </head>
    <body>
    <div>
    <table border="1">
    <thead>
    
    <tr>
    <th>
    username
    </th>
    <th>
    age
    </th>
    </tr>
    
    </thead>
    <tbody>
    {% for i in user_list %}
    <tr>
    <td>
    {{i.name}}
    </td>
    <td>
    {{i.age}}
    </td>
    </tr>
    {% endfor %}
    </tbody>
    </table>
    </div>
    </body>
    </html>


    html.PNG
    urls.py:
    [Python] 纯文本查看 复制代码
    url(r'^userlist_show/$', blog_views.user_show)


    urls.PNG

    效果就是:
    html.PNG
    看左侧,表格里已经出现所有数据了,包括我们刚刚导入的数据


    http://blog.163.com/sy_butian/欢迎交流
    发表于 2017-4-15 13:58:29
    前排围观学习感谢表哥分享
    使用道具 举报 回复
    发表于 2017-4-15 19:10:27
    春秋文阁负责人 发表于 2017-4-15 13:58
    前排围观学习感谢表哥分享

    谢谢捧场
    http://blog.163.com/sy_butian/欢迎交流
    使用道具 举报 回复
    发表于 2017-4-17 12:06:20
    支持一下吧
    使用道具 举报 回复
    发表于 2017-4-17 12:11:58
    有Django的学习资料吗?
    使用道具 举报 回复
    发表于 2017-4-17 23:09:14
    刚开始学Django,这个mark一下。
    使用道具 举报 回复
    django惰性查询机制啊  直接用原生sql语句不好么
    使用道具 举报 回复
    发表于 2017-4-18 14:37:11
    a207426719 发表于 2017-4-18 14:13
    django惰性查询机制啊  直接用原生sql语句不好么

    只是提供个思路,谢谢表哥指点
    http://blog.163.com/sy_butian/欢迎交流
    使用道具 举报 回复
    叶神威武
    请叫我加固工程师
    使用道具 举报 回复
    发表于 2017-4-19 19:25:59

    表哥不闹欸
    http://blog.163.com/sy_butian/欢迎交流
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册