轻量级sqlite接口
dbtools的Python项目详细描述
#dbtools
一个到sqlite数据库的简单接口。
*[文档](http://jhamrick.github.io/dbtools/)
*[github](https://github.com/jhamrick/dbtools/)
*[pypi](https://pypi.python.org/pypi/dbtools)
概述
lite数据库。
受[ipython sql]启发(https://pypi.python.org/pypi/ipython sql),
`dbtools`返回
[pandas dataframe](http://pandas.pydata.org/pandas docs/stable/dsintro.html dataframe)
来自"select"查询的对象,并可以处理其他sql语句的基本形式(`create`","insert","update","delete","drop")。
目标是*不*复制
[sqlalchemy]的全部功能(http://www.sqlalchemy.org/)或真正用于
对象关系映射。这意味着更多地用于
科学数据收集(例如行为实验),因为
方便地访问健壮的存储形式。
ly,您可以克隆存储库并从源代码安装:
``bash
git clone git@github.com:jhamrick/dbtools.git
cd dbtools
python setup.py install
````
`.so,"make install"相当于"python setup.py install"。您可以使用您喜欢的任何一个。
[('id',int),
…('name',str),
…("年龄",国际),
…('height',float)],
…主键'id',
…autoincrement=true)
>;>;tbl
用户(id integer主键autoincrement,name text,age integer,height real)
>;类型(tbl)
<;类"dbtools.table.table">;
````
n
>;>;tbl=表("data.db","people")
>;>;tbl
人员(id整数主键自动递增,姓名文本,年龄整数,身高实数)
>;>;tbl.列
(u'id',u'name',u'age',u'height')
>;tbl.主键
u'id'
>;>;tbl.autoinc记住
true
```
25 66.24
>;>;类型(tbl.select())
<;类"pandas.core.frame.dataframe">;
`````
>使用字典插入:
```python
>;>;tbl.insert({
…)姓名':'ben bitdidle',
…'年龄:24岁,
…高度:70.1})
>;>tbl.select()
name age height
id
1 alyssa p.hacker 25 66.24
2 ben bitdidle 24 70.10
````
.
\select
可以使用切片来选择行(但仅当主键
列是整数和自动递增时)。注意,由于sqlite
数据库是一个索引,索引第0个元素将返回一个
空的"dataframe"。
``python
>;>tbl[1]
name age height
id
1 alyssa p.hacker 25 66.24
>; name age height
id
2 ben bitdidle 2470.1
````
把它们当作列名来吃,然后选择那些列:
``python
>;>tbl['name','height']
name height
id
1 alyssa p.hacker 66.24
2 ben bitdidle 70.10
``
通过指定"where"关键字参数(您可以使用"?`
非信任输入的"sqlite3"库语法:
`` python
>;>tbl.select(where='age>;24')
name age height
id
1 alyssa p.hacker 25 66.24
>;>tbl.select(columns=['name','height',where=('age>;?',24))
名称高度
id
1 alyssa p.hacker 66.24
`````
ct`指定应更新哪些数据的方法。
``python
>;>tbl.update({age:26},其中:'id=1')
>;>tbl.select()
name age height
id
1 alyssa p.hacker 26 66.24
2 ben bitdidle 24 70.10
```
###删除
删除一行或多行需要指定"where"关键字参数
,如"select"和"update"(如果未指定,则所有行都将被删除)。
``python
>;>tbl.delete(where='height<;70')
>;>tbl.select()
ight
id
2 ben bitdidle 2470.1
```
当然,这意味着以后无法访问它,因为它不再存在。
``python
>;>tbl.drop()
>;>tbl.select()
traceback(最近的一次调用):
file"<;stdin>;",第1行,in<;module>;
file"dbtools/table.py",第339行,in选择
cur.execute(*cmd)
sqlite3.operational错误:没有这样的表:people
```
一个到sqlite数据库的简单接口。
*[文档](http://jhamrick.github.io/dbtools/)
*[github](https://github.com/jhamrick/dbtools/)
*[pypi](https://pypi.python.org/pypi/dbtools)
概述
lite数据库。
受[ipython sql]启发(https://pypi.python.org/pypi/ipython sql),
`dbtools`返回
[pandas dataframe](http://pandas.pydata.org/pandas docs/stable/dsintro.html dataframe)
来自"select"查询的对象,并可以处理其他sql语句的基本形式(`create`","insert","update","delete","drop")。
目标是*不*复制
[sqlalchemy]的全部功能(http://www.sqlalchemy.org/)或真正用于
对象关系映射。这意味着更多地用于
科学数据收集(例如行为实验),因为
方便地访问健壮的存储形式。
ly,您可以克隆存储库并从源代码安装:
``bash
git clone git@github.com:jhamrick/dbtools.git
cd dbtools
python setup.py install
````
`.so,"make install"相当于"python setup.py install"。您可以使用您喜欢的任何一个。
[('id',int),
…('name',str),
…("年龄",国际),
…('height',float)],
…主键'id',
…autoincrement=true)
>;>;tbl
用户(id integer主键autoincrement,name text,age integer,height real)
>;类型(tbl)
<;类"dbtools.table.table">;
````
n
>;>;tbl=表("data.db","people")
>;>;tbl
人员(id整数主键自动递增,姓名文本,年龄整数,身高实数)
>;>;tbl.列
(u'id',u'name',u'age',u'height')
>;tbl.主键
u'id'
>;>;tbl.autoinc记住
true
```
25 66.24
>;>;类型(tbl.select())
<;类"pandas.core.frame.dataframe">;
`````
>使用字典插入:
```python
>;>;tbl.insert({
…)姓名':'ben bitdidle',
…'年龄:24岁,
…高度:70.1})
>;>tbl.select()
name age height
id
1 alyssa p.hacker 25 66.24
2 ben bitdidle 24 70.10
````
.
\select
可以使用切片来选择行(但仅当主键
列是整数和自动递增时)。注意,由于sqlite
数据库是一个索引,索引第0个元素将返回一个
空的"dataframe"。
``python
>;>tbl[1]
name age height
id
1 alyssa p.hacker 25 66.24
>;
id
2 ben bitdidle 2470.1
````
把它们当作列名来吃,然后选择那些列:
``python
>;>tbl['name','height']
name height
id
1 alyssa p.hacker 66.24
2 ben bitdidle 70.10
``
通过指定"where"关键字参数(您可以使用"?`
非信任输入的"sqlite3"库语法:
`` python
>;>tbl.select(where='age>;24')
name age height
id
1 alyssa p.hacker 25 66.24
>;>tbl.select(columns=['name','height',where=('age>;?',24))
名称高度
id
1 alyssa p.hacker 66.24
`````
ct`指定应更新哪些数据的方法。
``python
>;>tbl.update({age:26},其中:'id=1')
>;>tbl.select()
name age height
id
1 alyssa p.hacker 26 66.24
2 ben bitdidle 24 70.10
```
###删除
删除一行或多行需要指定"where"关键字参数
,如"select"和"update"(如果未指定,则所有行都将被删除)。
``python
>;>tbl.delete(where='height<;70')
>;>tbl.select()
ight
id
2 ben bitdidle 2470.1
```
当然,这意味着以后无法访问它,因为它不再存在。
``python
>;>tbl.drop()
>;>tbl.select()
traceback(最近的一次调用):
file"<;stdin>;",第1行,in<;module>;
file"dbtools/table.py",第339行,in选择
cur.execute(*cmd)
sqlite3.operational错误:没有这样的表:people
```