python sqlalchemy中commit提交错误--项非空不能插入空数据

非常白痴的问题,插入数据库提交失败,一直走IntegrityError错误,没打印错误信息,以为插不进去,弄了好久,最后打印了错误信息

(sqlite3.IntegrityError) samples.file_type may not be NULL [SQL: u‘INSERT INTO samples (file_size, file_type, md5, crc32, sha1, sha256, sha512, ssdeep) VALUES (?, ?, ?, ?, ?, ?, ?, ?)‘] [parameters: (53, None, ‘hello‘, ‘crc32‘, ‘sha1‘, ‘sha256‘, ‘sha512‘, None)]

提示为file_type不能为空,但是我插入的时候file_type设置的是空

发出来第一是注意打印错误信息;第二设置非空数据一定不能传NULL,Python目前用的少比较容易忘

from sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Text, Index
from sqlalchemy.exc import SQLAlchemyError, IntegrityError
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

class Sample(Base):
    """Submitted files details."""
    __tablename__ = "samples"

    id = Column(Integer(), primary_key=True)
    file_size = Column(Integer(), nullable=False)
    file_type = Column(Text(), nullable=False)
    md5 = Column(String(32), nullable=False)
    crc32 = Column(String(8), nullable=False)
    sha1 = Column(String(40), nullable=False)
    sha256 = Column(String(64), nullable=False)
    sha512 = Column(String(128), nullable=False)
    ssdeep = Column(String(255), nullable=True)
    __table_args__ = Index("hash_index", "md5", "crc32", "sha1",
                           "sha256", "sha512", unique=True),

    def __repr__(self):
        return "<Sample(‘{0}‘,‘{1}‘)>".format(self.id, self.sha256)

    def __init__(self, md5, crc32, sha1, sha256, sha512,
                 file_size, file_type=None, ssdeep=None):
        self.md5 = md5
        self.sha1 = sha1
        self.crc32 = crc32
        self.sha256 = sha256
        self.sha512 = sha512
        self.file_size = file_size
        if file_type:
            self.file_type = file_type
        if ssdeep:
            self.ssdeep = ssdeep

engine = create_engine("sqlite:///cuckoo.db",echo=True)   #返回连接引擎

metadata = Base.metadata
metadata.create_all(engine)  #连接或者创建

#sample_mike = Sample("hello", "crc32", "sha1", "sha256", "sha512", 53, None, None)  #非空数据不能传空
sample_mike = Sample("hello", "crc32", "sha1", "sha256", "sha512", 53, "aa", None)
Session = sessionmaker(bind=engine) session = Session() session.add(sample_mike)  #数据库会话try:   session.commit() #提交except IntegrityError as e:   print eexcept SQLAlchemyError as e:   print e

  

最后在网上看到一个比较有用的工具sqlite,查看db数据库

sqlite、db、insert.py下载     http://files.cnblogs.com/files/aliflycoris/db.zip

时间: 2024-12-29 09:57:07

python sqlalchemy中commit提交错误--项非空不能插入空数据的相关文章

python SQLAlchemy中query与query()

想要在查询时加入 查询的字段,需要用到 query(*****),query.query() 二种不通的用法 前提:db.class TableName 都已配置,参考 https://www.cnblogs.com/whycai/p/11963443.html 1.query 1 from xxxx.models import TableName 2 3 tableName = TableName() 4 result = tableName.query.filter(' 条件').order

oracle中clob字段怎么查询非空列_20180517

select * from uap_groupsynlogvo a where a.log_msg is not null and dbms_lob.getlength(log_msg) <> 0; 附加demo的建表脚本跟业务数据. 链接:https://pan.baidu.com/s/1HQ6O82-eKnAX0N6O-hAdyw 密码:gkjx 原文地址:https://www.cnblogs.com/zzzzw/p/9049312.html

在js中对jsp输入框进行非空校验

假设jsp文本输入框id为"name" eg: <tr><td><i class="">*</i>人员名称:</td><td><input type="text" id="man" name="man" /></td></tr> js页面进行校验eg: var man=$('#man').val();

SpringMVC中servletFileUpload.parseRequest(request)解析为空获取不到数据问题

原因分析 首先我们来看下Spring mvc 中文件上传的配置 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8" /> <property nam

约束(主键、非空、唯一性、外键、检查约束)

一.五种约束 如果DML操作所涉及数据违反了已定义的约束,则数据库系统将拒绝执行这样的操作. Oracle数据库中,约束具体包括非空(NOT NULL)约束.唯一键(UNIQUE)约束.主键(PRIMARY KEY)约束.外键(FOREIGN KEY)约束和检查(CHECK)约束五种. 和数据表类似,约束也属于数据库对象,可以在建表的同时创建其相关约束,也可以在建表后单独添加:可以由用户命名,也可以由系统按照默认格式自动对约束进行命名:按照约束的定义位置,又可以分为表级约束和字段级约束两种. 建

C++ 中判断非空的错误指针

最近在写网络上的东西,程序经过长时间的运行,会出现崩溃的问题,经过DUMP文件的查看,发现在recv的地方接收返回值的时候,数据的长度异常的大差不多16亿多字节.而查看分配后的char指针显示为错误的指针,这可能是接收数据不对应产生的问题解决思路如下: 1.对返回值长度进行判断,如果超过项目内最大的返回值就直接return(比如我项目内的最大返回值为5000,哪么我设定的值为10000); 2.对char指针进行判断,由于这里返回的数据是有的,只是解析不出来而已,这里就是一个非空的错误指针,所以

svn提交错误:Commit failed (details follow): Can&#39;t create directory

重装系统后,启动svn,挂载原来的repository目录,访问正常,但提交时老发生以下错误: Commit failed (details follow): Can't create directory ***.txn: No such file or directory google一把,看到碰到这样问题的倒也不少,解决办法不多.下面这篇文章里得到个提醒:svn的repository目录转移到新机器时不要直接使用,要用svnadmin dump/load来拷贝使用.于是dump & load

Python SQLAlchemy基本操作和常用技巧包含大量实例,非常好python

http://www.makaidong.com/%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%AE%B6/28053.shtml "Python SQLAlchemy基本操作和常用技巧包含大量实例,非常好python":关键词:python sqlalchemy 基本 操 作和 常用 技巧 包含 大量 实例 非常好 python 首先说下,由于最新的 0.8 版还是开发版本,因此我使用的是 0.79 版,api 也许会有些不同.因为我是搭配 mysql innodb

SQLAlchemy 中的 Session、sessionmaker、scoped_session

目录 一.关于 Session 1. Session是缓存吗? 2. Session作用: 3. Session生命周期: 4. Session什么时候创建,提交,关闭? 4. 获取一个Session: 5. 关于SQLAlchemy 的 create_engine: 6. 关于线程安全: 二.单线程下 scoped_session 对创建 Session 的影响 1. 两个 Session 添加同一个对象 2. 不同的 Session 添加不同的对象 3. 用 scoped_session 创