我有一个使用"线程"模块的Python程序.每隔一秒,我的程序就会启动一个新的线程,从网络中获取一些数据,并将这些数据存储到我的硬盘中.我想使用sqlite3来存储这些结果,但我无法让它工作.问题似乎与以下几行有关:
conn = sqlite3.connect("mydatabase.db")
Run Code Online (Sandbox Code Playgroud)
以前我将所有结果存储在CSV文件中,并且没有任何这些文件锁定问题.希望这可以用sqlite实现.有任何想法吗?
我有一张桌子question_table和一张桌子ImageButton(后面).单击Back后,我需要从数据库中获取最后插入的记录.
我行包括下面的列:question,optionA,optionB,optionC,optionD,和我需要的数据对我的使用Activity.我在数据库中创建了一个方法,但它不起作用.
这是代码供参考:
MySQLiteHelper.java提取:
public List<ObjectiveWiseQuestion> getLastInsertQuestion()
{
// long index = 0;
List<ObjectiveWiseQuestion>LocwiseProfileList=new ArrayList<ObjectiveWiseQuestion>();
db = getReadableDatabase();
Cursor cursor = db.query(
"sqlite_sequence",
new String[]{"seq"},
"name = ?",
new String[]{TABLE_QUESTION},
null,
null,
null,
null );
if (cursor.moveToFirst())
{
do {
ObjectiveWiseQuestion owq= new ObjectiveWiseQuestion();
owq.setQuestion(cursor.getString(2));
owq.setOptionA(cursor.getString(3));
owq.setOptionB(cursor.getString(4));
owq.setOptionC(cursor.getString(5));
owq.setOptionD(cursor.getString(6));
owq.setCorrectOption(cursor.getString(7));
LocwiseProfileList.add(owq);
} while(cursor.moveToNext());
db.close();
}
return LocwiseProfileList;
}
Run Code Online (Sandbox Code Playgroud)
OnClickListner …
我有一个路径变量编码问题并将其插入SQLite数据库.我尝试使用编码("utf-8")功能解决它,这没有帮助.然后我使用了unicode()函数,它给了我unicode类型.
print type(path) # <type 'unicode'>
path = path.replace("one", "two") # <type 'str'>
path = path.encode("utf-8") # <type 'str'> strange
path = unicode(path) # <type 'unicode'>
Run Code Online (Sandbox Code Playgroud)
最后我获得了unicode类型,但是当路径变量的类型为str时,我仍然存在相同的错误
sqlite3.ProgrammingError:除非使用可解释8位字节串的text_factory(如text_factory = str),否则不得使用8位字节串.强烈建议您只需将应用程序切换为Unicode字符串.
你能帮我解决这个错误并解释正确的用法encode("utf-8")和unicode()功能吗?我经常和它搏斗.
编辑:
这个execute()语句引发了错误:
cur.execute("update docs set path = :fullFilePath where path = :path", locals())
Run Code Online (Sandbox Code Playgroud)
我忘了改变遇到同样问题的fullFilePath变量的编码,但我现在很困惑.我应该只使用unicode()或编码("utf-8")还是两者都使用?
我不能用
fullFilePath = unicode(fullFilePath.encode("utf-8"))
Run Code Online (Sandbox Code Playgroud)
因为它引发了这个错误:
UnicodeDecodeError:'ascii'编解码器无法解码位置32中的字节0xc5:序数不在范围内(128)
Python …
Android的Room持久性库慷慨地包含适用于对象或集合的@Insert和@Update注释.然而,我有一个用例(包含模型的推送通知)需要UPSERT,因为数据可能存在或可能不存在于数据库中.
Sqlite本身没有upsert,并且在这个SO问题中描述了变通方法.鉴于那里的解决方案,如何将它们应用于房间?
更具体地说,如何在Room中实现不会破坏任何外键约束的插入或更新?使用带onConflict = REPLACE的insert将导致onDelete调用该行的任何外键.在我的情况下,onDelete导致级联,重新插入行将导致其他表中的行与外键被删除.这不是预期的行为.
Android使用SQLite数据库来存储数据,我需要加密SQLite数据库,怎么做呢?我知道应用程序数据是私有的.但是,我需要明确加密我的应用程序正在使用的SQLite数据库.
我们最近需要在一些现有的SQLite数据库表中添加列.这可以通过以下方式完成ALTER TABLE ADD COLUMN.当然,如果表已被更改,我们希望不管它.不幸的是,SQLite不支持一个IF NOT EXISTS子句ALTER TABLE.
我们当前的解决方法是执行ALTER TABLE语句并忽略任何"重复列名"错误,就像这个Python示例(但在C++中).
然而,我们通常的做法来建立数据库模式是有含.SQL脚本CREATE TABLE IF NOT EXISTS和CREATE INDEX IF NOT EXISTS语句,可以使用执行sqlite3_exec或sqlite3命令行工具.我们不能放入ALTER TABLE这些脚本文件,因为如果该语句失败,它之后的任何内容都不会被执行.
我希望将表定义放在一个地方,而不是在.sql和.cpp文件之间进行拆分.有没有办法ALTER TABLE ADD COLUMN IF NOT EXISTS在纯SQLite SQL中编写变通方法?
我有Android SQLite数据库的一个问题.
我有一个表包含一个field.StudentFname和该应用程序与Android 2.3.1正常工作,现在如果我添加另一个字段,那么我的应用程序无法正常工作.
任何人都可以帮助我了解数据库的人,
我试图将此行从MS SQL Server移植到SQLite
IF NOT EXISTS(SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received')
INSERT INTO EVENTTYPE (EventTypeName) VALUES ('ANI Received');
Run Code Online (Sandbox Code Playgroud)
似乎SQLite不支持IF NOT EXISTS或者至少我不能使它工作.我错过了一些简单的事吗?有解决方法吗?
为什么这个简单的测试用例使用SQLAlchemy插入100,000行比直接使用sqlite3驱动程序慢25倍?我在实际应用程序中看到了类似的减速.难道我做错了什么?
#!/usr/bin/env python
# Why is SQLAlchemy with SQLite so slow?
# Output from this program:
# SqlAlchemy: Total time for 100000 records 10.74 secs
# sqlite3: Total time for 100000 records 0.40 secs
import time
import sqlite3
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
Base = declarative_base()
DBSession = scoped_session(sessionmaker())
class Customer(Base):
__tablename__ = "customer"
id = Column(Integer, primary_key=True)
name = Column(String(255))
def init_sqlalchemy(dbname = 'sqlite:///sqlalchemy.db'):
engine = create_engine(dbname, echo=False) …Run Code Online (Sandbox Code Playgroud) sqlite ×10
android ×4
database ×3
python ×3
sql ×2
alter-table ×1
android-architecture-components ×1
android-room ×1
encoding ×1
encryption ×1
orm ×1
rdbms ×1
sqlalchemy ×1
string ×1
unicode ×1