我正在努力在python中创建一个函数,它接受一个表名并输出一个CSV(逗号分隔)和该表的内容。到目前为止,我的代码如下:
def tableWriter(tableName):
with open('table.csv', 'wb') as f:
writer = csv.writer(f)
for row in c.execute("SELECT * FROM '"+tableName+"'"):
writer.writerows(row)
我一直有错误从传递给execute语句的函数定义中获取表名,并且遵循了API,因此我不知道还能在哪里转。
答案 0 :(得分:2)
您将表名括在引号中;这使它成为SQL中的字符串文字,而不是表引用。也许你想用双引号,反引号或方括号代替?有关差异的快速概述,请参阅SQLite网站上的SQL As Understood By SQLite:
'keyword'
单引号中的关键字是字符串文字。
"keyword"
双引号中的关键字是标识符。
[keyword]
方括号中的关键字是标识符。这不是标准的SQL。此引用机制由MS Access和SQL Server使用,并包含在SQLite中以实现兼容性。
`keyword`
用严重重音符号(ASCII代码96)括起来的关键字是标识符。这不是标准的SQL。这种引用机制由MySQL使用,并且包含在SQLite中以实现兼容性。
使用字符串格式而不是串联,以下内容应该有效:
def tableWriter(tableName):
with open('table.csv', 'wb') as f:
writer = csv.writer(f)
c.execute('SELECT * FROM "{0}"'.format(tableName)
writer.writerows(c)
无需遍历结果行; writer.writerows()
为您做到这一点。