优化SQLite很棘手.C应用程序的批量插入性能可以从每秒85次插入到每秒超过96,000次插入!
背景:我们使用SQLite作为桌面应用程序的一部分.我们有大量的配置数据存储在XML文件中,这些数据被解析并加载到SQLite数据库中,以便在初始化应用程序时进行进一步处理.SQLite非常适合这种情况,因为它速度快,不需要专门配置,数据库作为单个文件存储在磁盘上.
理由: 最初我对我所看到的表现感到失望.事实证明,SQLite的性能可能会有很大差异(对于批量插入和选择),具体取决于数据库的配置方式以及如何使用API.弄清楚所有选项和技术是什么并不是一件小事,所以我认为创建这个社区wiki条目以与Stack Overflow读者分享结果是谨慎的,以便为其他人节省相同调查的麻烦.
实验:我不是简单地谈论一般意义上的性能提示(即"使用事务!"),而是认为最好编写一些C代码并实际测量各种选项的影响.我们将从一些简单的数据开始:
我们来写一些代码吧!
代码:一个简单的C程序,它逐行读取文本文件,将字符串拆分为值,然后将数据插入SQLite数据库.在代码的这个"基线"版本中,创建了数据库,但我们实际上不会插入数据:
/*************************************************************
    Baseline code to experiment with SQLite performance.
    Input data is a 28 MB TAB-delimited text file of the
    complete Toronto Transit System schedule/route info
    from http://www.toronto.ca/open/datasets/ttc-routes/
**************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include "sqlite3.h"
#define INPUTDATA "C:\\TTC_schedule_scheduleitem_10-27-2009.txt"
#define DATABASE "c:\\TTC_schedule_scheduleitem_10-27-2009.sqlite"
#define …Run Code Online (Sandbox Code Playgroud) 自动设置对象的创建日期的最佳方法是什么,以及将在上次更新对象时记录的字段?
在我的模型中,我有:
created_at = models.DateTimeField(False, True, editable=False)
updated_at = models.DateTimeField(True, True, editable=False)
Run Code Online (Sandbox Code Playgroud)
在我看来:
if request.method == 'POST':
    form = MyForm(request.POST)
    if form.is_valid():
        obj = form.save(commit=False)
        obj.user = request.user
        obj.save()
        return HttpResponseRedirect('obj_list')
Run Code Online (Sandbox Code Playgroud)
我收到错误:
objects_object.created_at may not be NULL
Run Code Online (Sandbox Code Playgroud)
我是否必须自己手动设置此值?我认为这是传递给DateTimeFields的参数点(或者它们只是默认值,因为我设置'editable = False'它们不会显示在表单上,因此不会在请求中提交,因此不要进入表格?).
这样做的最佳方法是什么?一个init方法?
谢谢
ps - 我是django和Python的新手......
我正在使用以下df:
c.sort_values('2005', ascending=False).head(3)
      GeoName ComponentName     IndustryId IndustryClassification Description                                2004 2005  2006  2007  2008  2009 2010 2011 2012 2013 2014
37926 Alabama Real GDP by state 9          213                    Support activities for mining              99   98    117   117   115   87   96   95   103  102  (NA)
37951 Alabama Real GDP by state 34         42                     Wholesale trade                            9898 10613 10952 11034 11075 9722 9765 9703 9600 9884 10199
37932 Alabama Real GDP by state 15         327                    Nonmetallic mineral products manufacturing 980  968   940 …Run Code Online (Sandbox Code Playgroud) 我大量使用 python 3 中的 python 类型支持。
最近我试图将一个函数作为参数传递,但kwargs在typing.Callable签名中找不到任何帮助。
请检查下面的代码和评论。
import typing
# some function with singnature typing
def fn1_as_arg_with_kwargs(a: int, b: float) -> float:
    return a + b
# some function with singnature typing
def fn2_as_arg_with_kwargs(a: int, b: float) -> float:
    return a * b
# function that get callables as arg
# this works with typing
def function_executor(
        a: int, 
        b: float, 
        fn: typing.Callable[[int, float], float]):
    return fn(a, b)
# But what if I want to …Run Code Online (Sandbox Code Playgroud) 尝试了各种方法之后......我偶然发现这个页面采用了chromedriver,selenium和python的全页截图.
原始代码在这里:http://seleniumpythonqa.blogspot.com/2015/08/generate-full-page-screenshot-in-chrome.html(我在下面的帖子中复制代码)
它使用PIL,效果很棒!!!!! 然而,有一个问题......它捕获整个页面的固定标题和重复,并且在页面更改期间也错过了页面的某些部分.示例网址截取屏幕截图:
http://www.w3schools.com/js/default.asp
如何避免使用此代码重复标头...或者是否有更好的选项只使用python ... (我不知道java,不想使用java).
请参阅下面的当前结果和示例代码的屏幕截图.
test.py
"""
This script uses a simplified version of the one here:
https://snipt.net/restrada/python-selenium-workaround-for-full-page-screenshot-using-chromedriver-2x/
It contains the *crucial* correction added in the comments by Jason Coutu.
"""
import sys
from selenium import webdriver
import unittest
import util
class Test(unittest.TestCase):
    """ Demonstration: Get Chrome to generate fullscreen screenshot """
    def setUp(self):
        self.driver = webdriver.Chrome()
    def tearDown(self):
        self.driver.quit()
    def test_fullpage_screenshot(self):
        ''' Generate document-height screenshot '''
        #url = "http://effbot.org/imagingbook/introduction.htm"
        url = …Run Code Online (Sandbox Code Playgroud) 关于request.user在Django中引用了什么,我感到很困惑?它是指auth_user表中的用户名字段还是引用用户模型实例?
我有这个疑问,因为我没能利用来访问模板电子邮件字段{{request.user.username}}或{{user.username}}
所以我在视图文件中做了以下操作
userr = User.objects.get(username=request.user)
Run Code Online (Sandbox Code Playgroud)
并将'userr'传递给模板并访问电子邮件字段为 {{request.user.username}}
虽然它的工作,但我想对它有一些清晰.
谢谢 :)
我有以下类型的列表
lst = [
    [1, 0.23],
    [2, 0.39],
    [4, 0.31],
    [5, 0.27],
]
Run Code Online (Sandbox Code Playgroud)
我想按第二列的降序对此进行排序.我在python中试过'sorted'函数.但是给我一个'TypeError':'float'对象是unsubscriptable.请帮我解决这个问题.
我的项目中有requirements.txt 文件,PyCharm 可以完美地使用它。但是,它还会检查所有其他 txt 文件并显示误导性的错误消息。例如,拥有带有字符串的 foo.txt 文件
bar baz
Run Code Online (Sandbox Code Playgroud)
写入其中会产生以下消息:
<versionspec>, RequirementsTokenType.COMMENT, RequirementsTokenType.EOL, RequirementsTokenType.LSBRACE, RequirementsTokenType.SEMICOLON or RequirementsTokenType.WHITE_SPACE expected, got 'baz'
Run Code Online (Sandbox Code Playgroud)
我绝对不希望 PyCharm 将所有 txt 文件视为需求文件,我该如何改变这种奇怪的行为?
PyCharm 2020.2.1 CE
我正在对 aiohttp.ClientSession 实例执行 request() ,有时会引发 asyncio.TimeoutError 。我认为在这种情况下必须引发 aiohttp.ServerTimeoutError ,它源自 asyncio.TimeoutError ,正如该文档所述:http: //docs.aiohttp.org/en/stable/client_reference.html#aiohttp.ServerTimeoutError 为什么会发生?也许是因为我使用的是旧版本的aiohttp?2.3.8
UPD 这可能会发生在像这样的非常简单的代码中
async def example_of_code():
    session = aiohttp.ClientSession()
    response = await session.request(
        method='POST',
        url='some_url',
        params={'some': 'params'},
        data={'some': 'data'},
        headers={'some': 'headers'},
        timeout=10
    )
    return await response.json()
Run Code Online (Sandbox Code Playgroud) 大家好!
我正在浏览一篇关于MVC开发的微软教程,并且在尝试创建各种元素时遇到错误; 视图,控制器等
我得到的错误如下:
There was an error running the selected code generator: 
'Sequence contains no elements'
Run Code Online (Sandbox Code Playgroud)
每次我尝试创建一个新元素时它都是一致的.早些时候,我通过复制视图并重新利用它来绕过错误.但从长远来看,这不是最佳选择!
我现在坐在工作中做本教程,问题就出现了.但是,当我昨天在家里开始本教程时(因此,在不同的网络上)我没有问题.可能有话要说吗?
您认为这是我的网络,我的项目本身或完全不同的问题吗?伙计们,我迷失了这个!
谢谢大家!
python ×8
django ×2
python-3.x ×2
aiohttp ×1
asp.net-mvc ×1
c ×1
c# ×1
django-views ×1
email ×1
list ×1
optimization ×1
pandas ×1
performance ×1
pycharm ×1
selenium ×1
sorting ×1
sqlite ×1