【问题标题】:HTML output using Python 3/sqlite3使用 Python 3/sqlite3 的 HTML 输出
【发布时间】:2011-05-24 15:58:12
【问题描述】:

Python 和 SQLLite 的新手:@http://www.sqlite.org/sqlite.html - “SQLite 的命令行外壳”我发现了这个:

更改输出格式: sqlite3 程序能够以八种不同的格式显示查询结果:“csv”、“column”、“html”、“insert”、“line”、“list”、“tabs”和“tcl”。您可以使用“.mode”点命令在这些输出格式之间切换。

问题:如何使用 Python 3 附带的捆绑 SQLite 包执行此操作 - 我可以打开连接、获取光标、执行 SQL 等,但我不知道如何使用 .mode html 命令 - 或任何点命令。

这是一个示例程序 - 但我想使用 sqlite .mode html 在最后一行以 html 格式输出结果 'print(l)'

import sqlite3
def main():

    conn = sqlite3.connect('c:\dbTest.dat')
    curs=conn.cursor()
    fs='insert into test(token) values ("%s")'
    i=0
    x=input("Enter a number please: ")
    x.lstrip()
    x=int(x)
    while i<x:
        s=fs % ("ABCD"+str(i/0.999)) 
        curs.execute(s)
        i=i+1
    conn.commit()
    rows=curs.execute('select token from test')
    l=rows.fetchall()
    print(l)

main();

任何帮助将不胜感激。

TIA

【问题讨论】:

  • 各种点命令是sqlite3 程序的特性,它们不是SQLite 数据库库的一部分。 AFAIK 如果您需要 HTML 输出,您必须自己生成 HTML。或者您可以使用一些管道与sqlite3 交谈,但这可能更麻烦。
  • @mu 太短,aspw 可以在 python 中提供.mode 支持
  • @Mike:很好,谢谢你的课程。

标签: python html sqlite


【解决方案1】:

sqlite 的 html 模式是包装器的一部分,它不包含在 python 中,但您可以使用 aspw 模块来访问它...

import apsw
import StringIO as io
output=io.StringIO()
conn = apsw.Connection('dbTest.dat')
shell=apsw.Shell(stdout=output, db=conn)
# How to execute a dot command
shell.process_command(".mode html")
# continue

详情请见the ASPW example

编辑

如果你使用的是 python3...

Python 3.2 (r32:88445, Feb 20 2011, 21:29:02) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import io
>>> import apsw
>>> output = io.StringIO()
>>> conn = apsw.Connection(":memory:")
>>> shell = apsw.Shell(stdout=output, db=conn)
>>> shell.process_command(".mode html")
>>> 

【讨论】:

  • @Mike -“python 中不包含的包装器的一部分” - 我担心这可能是问题所在。必须查看 apsw 模块,然后我才能接受您的回答。 Tnx
  • @Mikey,不用担心。慢慢来
  • @Mike - 我为 P 3.2 安装了 apsw 但无法运行您的代码:StringIO 模块在哪里?我没有。在“conn = apsw.Connection('e:\dbTest.dat') 我得到这个错误:builtins.AttributeError: 'module' object has no attribute 'Connection'” - tnx
  • @Mikey,请看我的编辑...在 python3 下尝试io.StringIO()。我不确定您为什么遇到apsw.Connection() 的问题。你是如何安装apsw 的?我安装了他们的二进制 python3.2 安装程序,如您所见,我在上面的 IDLE 会话中使用apsw.Connection()
  • @mike - 得到编辑 - 理解。我用他们在他们的网站上提供的二进制安装程序包安装了 apsw - 它找到了我的 python 3.2 并安装了,我能够导入库。但它无法识别 Connection(),因为你可以看到它可能有依赖于 io 的东西?我今晚再试一次。我正在使用 Wing IDE,它一直坚如磐石,但我会尝试使用 IDLE。 Tnx。
猜你喜欢
  • 2017-10-18
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
相关资源
最近更新 更多