项目中需要Django链接MySql数据库,首先写好models.py中的类,每个类将对应到MySql中的一个table。
我定义了两个models.Model类,QueryLog和QueryResult分别存放检索的query信息和检索服务返回的结果信息。
通过 python manage.py sqlall Retrieval可以看到将要执行的sql 语句(Retrieval是Django的一个APP),python manage.py syncdb可以执行创建表。
注意,若该表已经在数据库中存在,修改了models.py中的该类的变量后,直接用syncdb不会变成修改后的表,需要执行mysql drop table命令,然后再syncdb。
我只需要用到insert, select操作,在Django中insert的做法是:
current_query = QueryLog(query_content= content, ...)
current_query.save()
网上看到了其他的一些数据库操作,顺便记下方便后面肯能用到时查看:
Select:
查询所有:
QueryLog.objects.all()
获取单个对象:(若结果是多个或者空会抛出异常)
QueryLog.objects.get(query_content='Hello')
按某个属性筛选:
QueryLog.objects.filter(query_content='hello')
与Like作用一样的查询:
QueryLog.objects.filter(query_content__contains='hello')
结果按升序排序(相当于asc)
QueryLog.objects.order_by('query_content')
结果按降序排序(相当于desc)
QueryLog.objects.order_by('-query_content')
限制结果的返回数目:
QueryLog.objects.order_by('name')[0]
QueryLog.objects.order_by('name')[0:2]
QueryLog.objects.filter(query_content='Hello').update(query_time='2222')
Delete:
QueryLog.objects.filter(query_content='Hello').delete()