错误:sqlite3.OperationalError:没有这样的表:main.m

时间:2017-05-02 16:58:01

标签: python sql python-3.x sqlite

我在python中有一个非常简单的代码,基本上我尝试为我的数据库中的每个表创建索引(已经存在)。数据库和我的脚本文件位于同一文件夹中。获取表的名称列表并尝试为第一个表创建索引后,我收到以下错误消息:

  

c.execute("CREATE INDEX IF NOT EXISTS "+tableName[m]+"Date ON "+tableName[m]+" (date)"); sqlite3.OperationalError:没有这样的表:   的main.m

数据库没有任何具有此名称的表(main.m)!

我的代码:

import sqlite3
DBname = 'myDatabase.sqlite';
# connect to the database
conn = sqlite3.connect(DBname);
c    = conn.cursor();
c.execute("SELECT name FROM sqlite_master WHERE type='table'");
tables = c.fetchall();
print("\nCreating the indices for each table in the database ...");
for m in range (0,len(tables)):
    tableName = tables[m][0];
    print(tableName)
    c.execute("CREATE INDEX IF NOT EXISTS "+tableName[m]+"Date ON "+tableName[m]+" (date)");
    c.execute("CREATE INDEX IF NOT EXISTS "+tableName[m]+"Year ON "+tableName[m]+" (year)");
conn.close()

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果%macro ColumnCal1(m,prefix); data _null_; attr_&prefix. = sum(of &m.1-&m.3); call symput("attr_&prefix.",attr_&prefix.); run; %mend ColumnCal1; data c2; set c1; array mth{12} m1-m12; %ColumnCal1(m=mth, prefix=ttl); attr_ttl =&attr_ttl.; run; 变量根据您的评论显示正确的表名,那么在创建sql语句而不是tableName时只需使用tableName

tableName[m]