我在 Raspberry PI 3 上使用 PonyORM 作为我的 SQLite 数据库的 ORM 和 Python 3.5(不是你能想象的最快的设备,但它不应该那么糟糕)。
一些操作,例如插入,似乎非常慢。一次插入包含 3 个短字符串的实体可能需要 4 - 10 秒。
这是我的 datamodel.py 文件:
from pony.orm import *
from datetime import datetime
db = Database('sqlite', 'website.db', create_db = True)
class User(db.Entity):
login = Required(str, unique=True)
password = Required(str)
actions = Set("Event")
class Event(db.Entity):
description = Optional(str)
date = Required(datetime)
ip = Required(str)
user = Optional(User)
db.generate_mapping(create_tables = True)
我还创建了一个非常简单的性能测试:
from datamodel import *
from datetime import *
sql_debug(True)
totalTime = datetime.now()
with db_session:
constructTime = datetime.now()
Event(date = datetime.now(),
ip = '0.0.0.0',
description = 'Sample event!')
constructTime = datetime.now() - constructTime
totalTime = datetime.now() - totalTime
print(constructTime)
print(totalTime)
它的样本结果:
GET NEW CONNECTION
BEGIN IMMEDIATE TRANSACTION
INSERT INTO "Event" ("description", "date", "ip", "classtype") VALUES (?, ?, ?, ?)
['Sample event!', '2016-03-08 23:05:15.066742', '0.0.0.0', 'Event']
COMMIT
RELEASE CONNECTION
0:00:00.000479
0:00:04.808138
SQL 查询字符串打印得很快,所以我猜这里的翻译不是问题,但是正如你所看到的,整个操作需要几秒钟。
这可能是什么原因?有什么办法可以改善这个荒谬的长时间吗?