# encoding: utf-8
import sqlite3
class LiteDBI:
''' SQLite3驱动的公共数据库接口类 '''
def __init__(self, database=':memory:'):
selfconn = sqlite3connect(database)
def close(self):
selfconnclose()
def query(self, sql, args, kwg):
asdict = dict(kwg)get('asdict')
curr = selfconncursor()
currexecute(sql, args)
fields = [f[0] for f in currdescriptions]
for r in curr:
yield dict(map(None, fields, r)) if asdict else r
currclose()
假设在项目公共定义模块中定义的各种类如下
# encoding: utf-8
# 从数据库接口类中导入LiteDBI接口
from dbi import LiteDBI
class ClassRoom(object):
def __init__(self, kwg):
self__dict__ = dict(kwg)
def __str__(self):
return 'Class Room: %s'%self__dict__
class ClassRoomMgr(object):
def __init__(self, dbi):
selfdbi = dbi
selfcached = {}
selfsql = 'select from classroom where classroomid = '
def __getitem__(self, k):
if k in not selfcached:
for r in selfdbiquery(selfsql, k, asdict=True):
selfcached[r['id']] = ClassRoom(r)
return selfcached[k]
# encoding: utf-8
# 从项目公共定义模块中导入各种类
from projcommoncls import
def tester():
dbi = LiteDBI('storagedb')
classroommgr = ClassRoomMgr(dbi)
print(classroommgr[102])
dbiclose()
if __name__ == '__main__':
test()
android sqlite数据库中cursor取得的boolean类型数据,可以使用long型进行判断,0是true,1是false,boolean value = cursorgetInt(boolean_column_index)>0;
如下代码:
DatabaseHelper daHelper = new DatabaseHelper(choicthis,"seconddatabase",2);SQLiteDatabase db = daHelpergetReadableDatabase();
Cursor cursor = dbquery("tempory",new String[]{"classnum","value"},null,null,null,null, null);
SqLiteDatabase查询并获取里面的数值的实现,案例(查询下图表格里面不同的name对应的value值)代码如下:
public int cgQueryItemValue(String name){
Loge(TAG, "hongyan:cgQueryItemValue name=" +name);
try {
Cursor c =mSqLiteDatabasequery(ConstENG_STRING2INT_TABLE,
new String[] {
ConstENG_STRING2INT_NAME,ConstENG_STRING2INT_VALUE
},
ConstENG_STRING2INT_NAME + "= \'" + name + "\'", null, null, null, null);
//上述的Cursor c 获取到的是指定name对应的一行(只包括指定列)也就是下图这样的:if (c !=null) {
cmoveToFirst();//必须写,否则读不到数据,将Index移动到第一位上
int valueIndex=cgetColumnIndexOrThrow(ConstENG_STRING2INT_VALUE);
//如上图,valueIndex= 1;
int value =cgetInt(valueIndex);
//注意value值是什么类型用合适的get,如果是String就得用getString!!否则会有异常
cclose();
return value;
}
} catch (Exception e) {
return 0;
}
return 0;
}
protected int cgQueryAutoTestFailCount()
{
int failCount = 0;
int result =0;
for(String itemName:ConstCG_DEFAULT_AUTO_TEST_ITEMS_NAME)
{
result =mEngSqlitecgQueryItemValue(itemName);
//Logd(TAG, "hongyan: cgQueryAutoTestFailCount item test result = " + result);
if(result== 0)
{
failCount++;
}
}
Logd(TAG, "hongyan: cgQueryAutoTestFailCount failCount = " + failCount);
return failCount;
}
android下使用cursor获取专辑,主要是在数据库里面先保存专辑的url地址,当使用cursor游标遍历数据库数据的时候,使用资源 *** 作类进行加载相应的url,如下代码:
Cursor cursor = contextgetContentResolver()query(MediaEXTERNAL_CONTENT_URI, columns, null, null, null);
Loge("cursor" , (cursor==null) + "");
while(cursormoveToNext()) {
// 查找封面
long albumId = cursorgetLong(5);
// 读取专辑
String album_uri = "content://media/external/audio/albumart"; // 专辑Uri对应的字符串
Uri albumUri = ContentUriswithAppendedId(Uriparse(album_uri), albumId);
// 取 ==> 得到一个输入流
Bitmap coverPhoto = null ;
try {
InputStream is = contextgetContentResolver()openInputStream(albumUri);
if(null != is) {
coverPhoto = BitmapFactorydecodeStream(is);
}
} catch (Exception e) {
eprintStackTrace();
}
dataadd(new Audio(cursorgetLong(0), cursorgetString(1) , cursorgetString(2) , cursorgetLong(3) , cursorgetString(4) , albumId , coverPhoto));
}
cursorclose();
本文Python *** 作 MySQL 数据库需要是使用到 PyMySQL 驱动
Python *** 作 MySQL 前提是要安装好 MySQL 数据库并能正常连接使用,安装步骤详见下文。
注意: 安装过程我们需要通过开启管理员权限来安装,否则会由于权限不足导致无法安装。
首先需要先下载 MySQL 安装包, 官网下载地址 下载对应版本即可,或直接在网上拉取并安装:
权限设置:
初始化 MySQL:
启动 MySQL:
查看 MySQL 运行状态:
Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:
登陆:
创建数据库:
查看数据库:
PyMySQL 模块使用 pip命令进行安装:
假如系统不支持 pip 命令,可以使用以下方式安装:
pymysql connect 函数:连接上数据库
输出结果显示如下:表面数据库连接成功
使用 pymysql 的 connect() 方法连接数据库,connect 参数解释如下:
conncursor():获取游标
如果要 *** 作数据库,光连接数据是不够的,咱们必须拿到 *** 作数据库的游标,才能进行后续的 *** 作,游标的主要作用是用来接收数据库 *** 作后的返回结果,比如读取数据、添加数据。通过获取到的数据库连接实例 conn 下的 cursor() 方法来创建游标,实例如下:
输出结果为:
cursor 返回一个游标实例对象,其中包含了很多 *** 作数据的方法,如执行sql语句,sql 执行命令: execute() 和 executemany()
execute(query,args=None):
executemany(query,args=None):
其他游标对象如下表:
完整数据库连接 *** 作实例如下:
以上结果输出为:
创建表代码如下:
如下所示数据库表创建成功:
插入数据实现代码:
插入数据结果:
Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
查询数据代码如下:
输出结果:
DB API中定义了一些数据库 *** 作的错误及异常,下表列出了这些错误和异常:
本文给大家介绍 Python 如何连接 Mysql 进行数据的增删改查 *** 作,文章通过简洁的代码方式进行示例演示,给使用 Python *** 作 Mysql 的工程师提供支撑。
Cursor cursor = sqLiteDatabasequery(true, Table,new String[]{需要查找的列}, id + "= 4" , null, null, null, null, null);
以上就是关于SQLite中如何从Cursor中取出一个对象。全部的内容,包括:SQLite中如何从Cursor中取出一个对象。、Android中SQLite的Cursor如何取得boolean型数据、怎么后台查询SQLiteDatabase中的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)