Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 错误:sqlite3.OperationalError:没有这样的表:main.m_Python_Sql_Python 3.x_Sqlite - Fatal编程技术网

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

Python 错误:sqlite3.OperationalError:没有这样的表:main.m,python,sql,python-3.x,sqlite,Python,Sql,Python 3.x,Sqlite,我有一个非常简单的python代码,基本上我尝试为数据库中的每个表(已经存在)创建索引。数据库和我的脚本文件位于同一文件夹中。获取表名列表并尝试为第一个表创建索引后,我收到以下错误消息: c.execute(“如果不存在创建索引”+tableName[m]+”日期 “+tableName[m]+“(date)”);sqlite3.ERROR:没有这样的表: main.m 数据库中没有任何具有此名称(main.m)的表 我的代码: import sqlite3 DBname = 'myDataba

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

c.execute(“如果不存在创建索引”+tableName[m]+”日期
“+tableName[m]+“(date)”)
;sqlite3.ERROR:没有这样的表: 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()

谢谢你的帮助

如果
tableName
变量根据您的注释显示正确的表名,那么在创建sql语句时只需使用
tableName
,而不是
tableName[m]

c.execute("CREATE INDEX IF NOT EXISTS "+tableName+"Date ON "+tableName+" (date)");
c.execute("CREATE INDEX IF NOT EXISTS "+tableName+"Year ON "+tableName+" (year)");  

MySQL与SQLite无关,它们是不同的产品。是否应该
tableName[m]
只是
tableName
?打印出tableName变量。它显示的表名正确吗?@Shadow:谢谢你编辑我的帖子。是,它显示第一个表的正确名称!在这种情况下,为什么在创建sql语句时使用
tableName[m]
form?只需使用
tableName