使用Python和Sqlalchemy将相同的值作为布尔或整数存储在sqlite数据库中会产生以下结果.
Value stored as Boolean:
SqlAlchemy ORM: Total time for 40000 records 62.5009999275 secs
SqlAlchemy Core: Total time for 40000 records 56.0600001812 secs
Value stored as Integer:
SqlAlchemy ORM: Total time for 40000 records 5.72099995613 secs
SqlAlchemy Core: Total time for 40000 records 0.770999908447 secs
Run Code Online (Sandbox Code Playgroud)
使用布尔类型时为什么会出现这样的性能问题?
我知道SQLite没有布尔类型的概念,而是将它们存储为整数1(True)或0(False).我原以为SqlAlchemy会把python bool映射到Sqlite整数.
用于产生上述(改性从输出脚本这个问题):
import time
import sqlite3
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, create_engine, Boolean
from sqlalchemy.orm import scoped_session, sessionmaker
Base = declarative_base()
DBSession = scoped_session(sessionmaker())
class CustomerInteger(Base): …Run Code Online (Sandbox Code Playgroud)