草庐IT

sqlite-wal

全部标签

sqlite - 如何规划 SQLite 数据库中的架构更改?

我目前正在开发一个将数据存储在SQLite中的应用程序数据库。数据库的读取访问权限将比写入访问权限多得多(实际上,它会被数据填充一次,然后几乎只会发生读取)。因此,读取性能更为重要。我目前正在开发的架构在未来很可能会发生变化,会添加更多的列和表。一般来说,我对数据库没有太多经验。我的问题是,特别是在SQLite中,更改架构时是否需要考虑任何陷阱?是否有任何模式或最佳做法可以为此类情况提前计划? 最佳答案 这里有一些建议:不要使用select*from...,因为*的含义会随着模式的变化而变化;明确命名您的查询使用的列将模式版本号保存

Python 不会将数据保存到 sqlite db

这是我的代码:conn=sqlite3.connect(nnpcconfig.commondb)cur=conn.cursor()query=['2124124','test2','test3','test4','test5']cur.execute("insertintousers(id,encpass,sname,name,fname)values(?,?,?,?,?)",query)conn.commitcur.execute("select*fromusers")forrowincur:printrow这段代码有效,返回了提供给它的行。但事实证明,一旦脚本终止,表格就会再次清除

Python 不会将数据保存到 sqlite db

这是我的代码:conn=sqlite3.connect(nnpcconfig.commondb)cur=conn.cursor()query=['2124124','test2','test3','test4','test5']cur.execute("insertintousers(id,encpass,sname,name,fname)values(?,?,?,?,?)",query)conn.commitcur.execute("select*fromusers")forrowincur:printrow这段代码有效,返回了提供给它的行。但事实证明,一旦脚本终止,表格就会再次清除

android - SQLite - 从 csv 文件中将带有换行符的字符串插入数据库

全部,我正在尝试在TEXT字段中将长文本条目注入(inject)SQLite数据库。此文本中有新行(即它跨越多个段落)。如果我手动执行INSERT,我可以显示新行:INSERTINTO"LOGENTRY"VALUES(5,40,'PLACE','line1line2line4',1283990533315,'4A','TEXT','',NULL);但是如果我在CSV文件中有等效的文本并尝试将其导入表中,我会收到一个错误,提示它期望的列数多于现有的列数(只要遇到新行,程序就会假定它是输入的末尾,因此它缺少列)。这可能吗?还是手动执行每个INSERT的唯一方法?

android - SQLite - 从 csv 文件中将带有换行符的字符串插入数据库

全部,我正在尝试在TEXT字段中将长文本条目注入(inject)SQLite数据库。此文本中有新行(即它跨越多个段落)。如果我手动执行INSERT,我可以显示新行:INSERTINTO"LOGENTRY"VALUES(5,40,'PLACE','line1line2line4',1283990533315,'4A','TEXT','',NULL);但是如果我在CSV文件中有等效的文本并尝试将其导入表中,我会收到一个错误,提示它期望的列数多于现有的列数(只要遇到新行,程序就会假定它是输入的末尾,因此它缺少列)。这可能吗?还是手动执行每个INSERT的唯一方法?

perl - 为什么 SQLite 在使用 Perl 的 DBD::SQLite 时为事务中的第二个查询提供 "database is locked"?

当使用PerlDBD::SQLite时,SQLite是否存在一个已知问题,在单个事务中为第二个查询提供“数据库已锁定”错误?场景:Linux、PerlDBI、AutoCommit=>0,一个包含两个代码块的子例程(使用代码块来本地化变量名称)。在第一个代码块中,查询句柄由prepare()在select语句上创建,它被executed()并关闭block。第二个代码块另一个查询句柄是由准备更新语句创建的,并且经常(30%的时间)SQLite/DBI在此阶段给出数据库锁定错误。我认为错误发生在prepare()期间而不是execute()期间。我的解决方法是在第一个查询之后提交。(在第一

perl - 为什么 SQLite 在使用 Perl 的 DBD::SQLite 时为事务中的第二个查询提供 "database is locked"?

当使用PerlDBD::SQLite时,SQLite是否存在一个已知问题,在单个事务中为第二个查询提供“数据库已锁定”错误?场景:Linux、PerlDBI、AutoCommit=>0,一个包含两个代码块的子例程(使用代码块来本地化变量名称)。在第一个代码块中,查询句柄由prepare()在select语句上创建,它被executed()并关闭block。第二个代码块另一个查询句柄是由准备更新语句创建的,并且经常(30%的时间)SQLite/DBI在此阶段给出数据库锁定错误。我认为错误发生在prepare()期间而不是execute()期间。我的解决方法是在第一个查询之后提交。(在第一

sql - Android SQLite 无法增长

我们正在创建一个与服务器同步5000个日历条目的应用程序。问题是在添加1913个条目后失败并给出以下堆栈跟踪。有什么问题?12-3011:48:16.989:DEBUG/dalvikvm(384):GC_EXPLICITfreed5699objects/345848bytesin579ms12-3011:48:22.530:DEBUG/dalvikvm(232):GC_EXPLICITfreed2552objects/124160bytesin311ms12-3011:48:24.560:ERROR/CursorWindow(232):needtogrow:mSize=1048576,

sql - Android SQLite 无法增长

我们正在创建一个与服务器同步5000个日历条目的应用程序。问题是在添加1913个条目后失败并给出以下堆栈跟踪。有什么问题?12-3011:48:16.989:DEBUG/dalvikvm(384):GC_EXPLICITfreed5699objects/345848bytesin579ms12-3011:48:22.530:DEBUG/dalvikvm(232):GC_EXPLICITfreed2552objects/124160bytesin311ms12-3011:48:24.560:ERROR/CursorWindow(232):needtogrow:mSize=1048576,

sqlite - 在执行 SQLite alter table 技巧时更新外键引用

在SQLiteFAQ[1]中提到SQLite没有完整的ALTERTABLE支持。在之前关于StackOverflow[2]的问题中,提到了一个技巧来完成表格修改。我想知道的是如何保留FOREIGNKEY引用,因为这些引用被移动到重命名的表中,该表随后被删除。我是否应该对与我正在修改的实际表有外键关系的每个表执行相同的技巧?[1]http://www.sqlite.org/lang_altertable.html[2]HowdoIrenameacolumninaSQLitedatabasetable? 最佳答案 是的,您需要使用相同的