我已经编写了一个Python脚本来向表中添加行。我决定,如果我也可以使用相同的脚本查看表,而不必退出脚本并运行sqlite3或切换到另一个shell并运行sqlite3,那就太好了。因此,我写下了我期望会给我想要的东西,并做了一些...这是有问题的脚本的一部分:
import sqlite3
conn = sqlite3.connect('stu.db')
c = conn.cursor()
var = 1
while var == 1:
enquiry = raw_input("What would you like to do?> ")
enquiry == 'stu db' or enquiry == 'sd':
c.execute("SELECT * FROM stu")
conn.commit
Run Code Online (Sandbox Code Playgroud)
在sqlite3中,当您运行SELECT * FROM stu时,您会得到一个格式良好的表,具有统一的行和列。当我在这里运行它时,我会在括号中找到一长串信息。看起来像这样(我没有打印出实际结果,因为这会违反某些联邦法律):
[(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None), (1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None)]
Run Code Online (Sandbox Code Playgroud)
我想我知道发生了什么事。Python只是随口吐出对sqlite的查询返回的内容,但是有没有一种方法可以格式化此信息以使其易于阅读?
您可以pandas为此使用:
print pd.read_sql_query("SELECT * FROM stu", conn)
Run Code Online (Sandbox Code Playgroud)
示例程序(python 2.7.6,pandas 0.18.0):
import sqlite3
import pandas as pd
conn = sqlite3.connect(':memory:')
c = conn.cursor()
c.execute('create table stu ( ID, Name, ShoeSize, Course, IQ, Partner )')
conn.commit()
c.executemany('insert into stu VALUES (?, ?, ?, ?, ?, ?)',
[(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),
(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),
(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),
(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),
(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),
(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),
(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),
(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),
(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None),
(1234567890, u'John Doe', 3852, u'DEGR-AA', 4, None)])
conn.commit()
# Ugly way
print list(c.execute("SELECT * FROM stu"))
# Pretty way
print pd.read_sql_query("SELECT * FROM stu", conn)
Run Code Online (Sandbox Code Playgroud)
结果,包括丑陋和漂亮的输出:
print pd.read_sql_query("SELECT * FROM stu", conn)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6824 次 |
| 最近记录: |