Django数据库使用遇到的坑

本文介绍了Django中设置字段为空的方法,推荐使用pandas的to_sql进行高效批量插入,以及如何利用Django的models进行数据查询。讨论了get和filter的区别,以及如何使用Q函数进行复杂查询。最后提到了获取数据库最大值的两种方式,注意返回的列名变化。
摘要由CSDN通过智能技术生成

设置字段为空

Django创建数据表时,默认字段不能为空,要想其为空,需要在字段后添加参数,

null=True   表示数据字段可为空

如果还想在django的Admin中维护数据时也可允许空值,需要再加一个参数  

blank=True  

因为Django自动做了数据验证不允许字段为空,如果想要在Django中也可以将字段保存为空值,就需要添加该参数。

使用pandas的to_sql批量插入

django自带批插入函数bulk_create,但效率不是很高,如果数据源是DataFrame格式的,则数据插入没有DataFrame的to_sql速度快,但目前to_sql只支持mysql和sqlite3,所以用这两个数据库的可以考虑使用to_sql插入数据。方法很简单,以sqlite3为例:

import pandas
import sqlite3


engine = settings.DATABASES['default']['NAME']
cn = sqlite3.connect(engine)
df.to_sql(tablename, cn, index=False, if_exists='append')

如果需要把index作为一列插入,则index=true,同时如果主键不是‘index’,可以通过index_lable参数设定插入列

df.to_sql(TABLE, cn, index=True, index_label='id', if_exists='
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值