GVKun编程网logo

执行中的Python sqlite3字符串变量

14

如果您想了解执行中的Pythonsqlite3字符串变量的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于pythonsqlite3模块操作sqlite数据库的简单示例、PythonSQLi

如果您想了解执行中的Python sqlite3字符串变量的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于python sqlite3模块操作sqlite数据库的简单示例、Python SQLite如何获取正在执行的SQL字符串语句、python – ‘从sqlite3导入dbapi2作为sqlite3’vs’导入sqlite3’?、Python 中打印字符串变量中的原始转义字符的有价值的信息。

本文目录一览:

执行中的Python sqlite3字符串变量

执行中的Python sqlite3字符串变量

我尝试在Python中执行此sqlite3查询。我将代码减少到最小,sqlite.connect等有效。

column = ''Pron_1_Pers_Sg''goal = ''gender'' constrain = ''Mann''with con:    cur = con.cursor()    cur.execute("SELECT ? FROM Data where ?=?", (column, goal, constrain))    con.commit()    rows = cur.fetchall()    for element in rows:        values.append(element)

这将返回一个空列表。如果我对字符串进行硬编码,它将起作用并返回值。

答案1

小编典典

参数标记只能用于表达式,即值。您不能将它们用于表和列名之类的标识符。

用这个:

cur.execute("SELECT "+column+" FROM Data where "+goal+"=?", (constrain,))

或这个:

cur.execute("SELECT %s FROM Data where %s=?" % (column, goal), (constrain,))

(并且不要在实际访问完数据之前提交。)

python sqlite3模块操作sqlite数据库的简单示例

python sqlite3模块操作sqlite数据库的简单示例

对python这个高级语言感兴趣的小伙伴,下面一起跟随小编 jb51.cc的小编两巴掌来看看吧!

sqlite是一个包含在C库中的轻量级数据库。它并不需要独立的维护进程,并且允许使用非标准变体(nonstandard variant)的SQL查询语句来访问数据库。

一些应用可是使用sqlite保存内部数据。它也可以在构建应用原型的时候使用,以便于以后转移到更大型的数据库。

sqlite的主要优点:

1. 一致性的文件格式:

在sqlite的官方文档中是这样解释的,我们不要将sqlite与Oracle或Postgresql去比较,与我们自定义格式的数据文件相比,sqlite不仅提供了很好的

移植性,如大端小端、32/64位等平台相关问题,而且还提供了数据访问的高效性,如基于某些信息建立索引,从而提高访问或排序该类数据的性能,sqlite提供的事务功能,也是在操作普通文件时无法有效保证的。

 

2. 在嵌入式或移动设备上的应用:

由于sqlite在运行时占用的资源较少,而且无需任何管理开销,因此对于PDA、智能手机等

移动设备来说,sqlite的优势毋庸置疑。

 

3. 内部数据库:

在有些应用场景中,我们需要为插入到数据库服务器中的数据进行数据过滤或数据清理,以保证最终插入到数据库服务器中的数据有效性。有的时候,数据是否有效,不能通过单一一条记录来进行判断,而是需要和之前一小段时间的历史数据进行特殊的计算,再通过计算的结果判断当前的数据是否合法。

在这种应用中,我们可以用sqlite缓冲这部分历史数据。还有一种简单的场景也适用于sqlite,即统计数据的预计算。比如我们正在运行数据实时采集的服务程序,我们可能需要将每10秒的数据汇总后,形成每小时的统计数据,该统计数据可以极大的减少用户查询时的数据量,从而大幅提高前端程序的查询效率。在这种应用中,我们可以将1小时内的采集数据均缓存在sqlite中,在达到整点时,计算缓存数据后清空该数据。

 

4. 数据分析:

可以充分利用sqlite提供sql特征,完成简单的数据统计分析的功能。这一点是yaml,csv文件无法比拟的。

 

用我的话来说,他很小,很适合做临时的数据库,迁移数据很简单,直接传递文件就可以了。 其实我一开是是选用leveldb的,但是他的特性像nosql,一些稍微复杂的查询,就有些麻烦了。

1、创建一个新的数据库:sqlite3 文件名

这个test.db 存放着所有的数据。

sqlite3 rui.db

 

2、打开一个已经存在的数据库:sqlite3 已经存在的文件名

创建一个新数据库和打开一个已经存在的数据库命令是一模一样的,如果文件在当前目录下不存在,则新建;如果存在,则打开。

 

3、导入数据:.read 数据文件

打开记事本,并将下列 sql 语句复制到记事本中,保存为 test.sql 到上面说到的 Db 目录下,在命令行环境中输入

.read test.sql

即将所有的数据导入到 rui.db 数据库中。

4、列出所有的数据表: .tables

完成上面所有的工作以后,我们就可以列出所有的数据表了


[root@devops-ruifengyun /tmp ]$ sqlite3 rui.db 
sqlite version 3.7.17 2013-05-20 00:56:22
Enter .help for instructions
Enter sql statements terminated with a ;
sqlite> .tables
ceshi  tbl1 
sqlite> 
sqlite>

# End www.jb51.cc

5、显示数据库结构:.schema

其实就是一些 sql 语句,他们描述了数据库的结构,如图


sqlite> .schema
CREATE TABLE tbl1(one varchar(10),two smallint);
CREATE TABLE ceshi (user text,note text);

# End www.jb51.cc

6、显示表的结构:.schema 表名


sqlite> .schema ceshi
CREATE TABLE ceshi (user text,note text)

# End www.jb51.cc

7、导出某个表的数据: .dump 表名


sqlite> .dump tbl1
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE tbl1(one varchar(10),two smallint);
INSERT INTO tbl1 VALUES('goodbye',20);
INSERT INTO tbl1 VALUES('hello!',10);
COMMIT;

# End www.jb51.cc

再来讲解下python sqlite3的用法,其实和MysqLdb很像吧,他的语法和MysqL差不多


# @param python用sqlite3模块操作sqlite数据库
# @author 小编 jb51.cc|www.www.jb51.cc 

import sqlite3
#原文: xiaorui.cc 
#链接数据库文,sqlite都是以文件的形式存在的。
#如果数据库文件不存在,回新建一个,如果存在则打开此文件
conn = sqlite3.connect('example')
c = conn.cursor()
#创建table
c.execute('''create table ceshi (user text,note text)''')
  
# 插入数据,执行sql语句
c.execute('''insert into ceshi (user,note)  values('mPfijriH9T','mPfijriH9T')''')
c.execute('''insert into ceshi (user,note)  values('7IYcUrKWbw','7IYcUrKWbw')''')
c.execute('''insert into ceshi (user,note)  values('bXB9VcPdnq','bXB9VcPdnq')''')
c.execute('''insert into ceshi (user,note)  values('2JFk7EWcCz','2JFk7EWcCz')''')
c.execute('''insert into ceshi (user,note)  values('QeBFAlYdPr','QeBFAlYdPr')''')
c.execute('''insert into ceshi (user,note)  values('bDL4T69rsj','bDL4T69rsj')''')
c.execute('''insert into ceshi (user,note)  values('BoxPqmkEd9','BoxPqmkEd9')''')
c.execute('''insert into ceshi (user,note)  values('rvBegjXs16','rvBegjXs16')''')
c.execute('''insert into ceshi (user,note)  values('CWrhA2eSmQ','CWrhA2eSmQ')''')
c.execute('''insert into ceshi (user,note)  values('qQicfV2gvG','qQicfV2gvG')''')
c.execute('''insert into ceshi (user,note)  values('s3vg1EuBQb','s3vg1EuBQb')''')
c.execute('''insert into ceshi (user,note)  values('Lne4xj3xpc','Lne4xj3xpc')''')
c.execute('''insert into ceshi (user,note)  values('PH3R86CKDT','PH3R86CKDT')''')
c.execute('''insert into ceshi (user,note)  values('HEK7Ymg0Bw','HEK7Ymg0Bw')''')
c.execute('''insert into ceshi (user,note)  values('lim2OCxhQp','lim2OCxhQp')''')
c.execute('''insert into ceshi (user,note)  values('kVFfLljBJI','kVFfLljBJI')''')
c.execute('''insert into ceshi (user,note)  values('Hpbs3VOXNq','Hpbs3VOXNq')''')
c.execute('''insert into ceshi (user,note)  values('f5ubmznBIE','f5ubmznBIE')''')
c.execute('''insert into ceshi (user,note)  values('beJCQA2oXV','beJCQA2oXV')''')
c.execute('''insert into ceshi (user,note)  values('JyPx0iTBGV','JyPx0iTBGV')''')
c.execute('''insert into ceshi (user,note)  values('4S7RQTqw2A','4S7RQTqw2A')''')
c.execute('''insert into ceshi (user,note)  values('ypDgkKi27e','ypDgkKi27e')''')
c.execute('''insert into ceshi (user,note)  values('Anrwx8SbIk','Anrwx8SbIk')''')
c.execute('''insert into ceshi (user,note)  values('k5ZJFrd8am','k5ZJFrd8am')''')
c.execute('''insert into ceshi (user,note)  values('KYcTv54QVC','KYcTv54QVC')''')
c.execute('''insert into ceshi (user,note)  values('Jv6OyfMA0g','Jv6OyfMA0g')''')
c.execute('''insert into ceshi (user,note)  values('kpSLsQYzuV','kpSLsQYzuV')''')
c.execute('''insert into ceshi (user,note)  values('u2zkJQWdOY','u2zkJQWdOY')''')
c.execute('''insert into ceshi (user,note)  values('D0aspFbW8c','D0aspFbW8c')''')
c.execute('''insert into ceshi (user,note)  values('CwqhvDOrWZ','CwqhvDOrWZ')''')
c.execute('''insert into ceshi (user,note)  values('Tdy5LA9sWO','Tdy5LA9sWO')''')
c.execute('''insert into ceshi (user,note)  values('76HnRVbLX0','76HnRVbLX0')''')
c.execute('''insert into ceshi (user,note)  values('B3aoFibRPV','B3aoFibRPV')''')
c.execute('''insert into ceshi (user,note)  values('7Q6lNdL5JP','7Q6lNdL5JP')''')
c.execute('''insert into ceshi (user,note)  values('Hsob6Jyv4A','Hsob6Jyv4A')''')
#将变动保存到数据库文件,如果没有执行词语句,则前面的insert 语句操作不会被保存
conn.commit()
c.execute('''select * from ceshi ''').fetchall()
#得到所有的记录
rec = c.execute('''select * from ceshi''')
print c.fetchall()

# End www.jb51.cc

Python SQLite如何获取正在执行的SQL字符串语句

Python SQLite如何获取正在执行的SQL字符串语句

假设我们有一条SQL语句,只需要在对数据库执行之前用参数完成即可。例如:

sql = ''''''      SELECT  id, price, date_out      FROM sold_items      WHERE date_out BETWEEN ? AND ?      ''''''database_cursor.execute(sql, (start_date, end_date))

我如何获取经过解析和执行的字符串?

SELECT  id, price, date_outFROM sold_itemsWHERE date_out BETWEEN 2010-12-05 AND 2011-12-01

在这种简单情况下,它不是很重要,但是我还有其他SQL语句要复杂得多,出于调试目的,我想在sqlite管理器中自己执行它们并检查结果。

提前致谢

答案1

小编典典

更新。我从该网页上了解到,自Python 3.3起,您可以使用以下命令触发执行的SQL的打印

connection.set_trace_callback(print)

如果您想恢复为静默处理,请使用

connection.set_trace_callback(None)

您可以使用其他功能代替print

python – ‘从sqlite3导入dbapi2作为sqlite3’vs’导入sqlite3’?

python – ‘从sqlite3导入dbapi2作为sqlite3’vs’导入sqlite3’?

当我看到pysqlite的示例时,sqlite库有两个用例.

from sqlite3 import dbapi2 as sqlite3

import sqlite3

为什么有两种方法可以支持sqlite3 api?这两者有什么区别?它们是一样的吗?在正常使用中,这将是优选的.

添加

我知道它们在命名空间方面有所不同,我想问一下它们在使用方面是否相同,我的意思是,它们是否具有相同的API集?

解决方法

他们是一样的.在我的Python安装(v2.6)的Lib /目录中,sqlite3包中包含一个__init__.py文件,其中包含:

from dbapi2 import *

这意味着两种导入方式完全相同.

也就是说,我绝对建议只使用import sqlite3 – 因为这是记录在案的方法.

Python 中打印字符串变量中的原始转义字符

Python 中打印字符串变量中的原始转义字符

从数据库里取出一系列文字信息经过保存到文件后,再读出,发现长度发生了变化。
比对后发现可见文字信息没有变化,大小变化是换行符造成的,怀疑是某个地方的\r\n 被保存成了\r 。
我现在需要能打印出字符串中的转义字符的原始值,例如
aaa\r\nbbb
我就希望输出成 aaa\r\nbbb
而不是
aaa
bbb
我可以用来比对。
 
一般大家都知道
content = r''something\r\nsomething''
print(content)
这样的写法
但是我这里 content 是从数据库读取的,不是定义写死的,没有地方加前缀 r
使用如下方法就可以打印出 content 字符串变量中的原本的转义字符。
print(repr(''aaa\ndbb''))
此处可以:print(repr(content))即可

关于执行中的Python sqlite3字符串变量的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于python sqlite3模块操作sqlite数据库的简单示例、Python SQLite如何获取正在执行的SQL字符串语句、python – ‘从sqlite3导入dbapi2作为sqlite3’vs’导入sqlite3’?、Python 中打印字符串变量中的原始转义字符的相关信息,请在本站寻找。

本文标签: