SQLite Near ORDER 中的语法错误 (sqlite3.OperationalError)
Syntax Error in SQLite Near ORDER (sqlite3.OperationalError)
我认为这是菜鸟犯的错误。我试了几个小时但找不到解决方案。
听说SQLite支持多线程访问一个文件。所以我在 Python:
中创建了第一个包含多个 table 的数据库
def create_table(page):
con = connect('emails.db')
cur = con.cursor()
try:
cur.executescript(f'''
CREATE TABLE {page} (
id INTEGER,
email VARCHAR,
password VARCHAR,
time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
''')
con.commit()
except:
pass
con.close()
现在我的问题是我想做什么:
- 移动第一行 table e。 G。
fremdgehen
到 fremdgehen_used
- 做点什么
- 删除第一行
fremdgehen
- 重复
我的程序做了什么:
- 将
fremdgehen
的第一行移动到 fremdgehen_used
- 做点什么
它没有删除“fremdgehen”的第一行,只将一行移动到“fremdgehen_used”,而是给出以下错误:
Exception in thread
Thread-1reifer6:
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932, in _bootstrap_inner
self.run()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "c:\Users\Administrator\Desktop\de_1\v2\sub_bot\main.py", line 92, in main
delete_table_row(page)
File "c:\Users\Administrator\Desktop\de_1\main_bot\data.py", line 62, in delete_table_row
cur.execute(f'DELETE FROM {page} ORDER BY id LIMIT 1')
sqlite3.OperationalError: near "ORDER": syntax error
*这条消息三次因为三个线程都是运行
我的代码:
移动第一行 table e。 G。 fremdgehen
至 fremdgehen_used
def move_table(page):
# page is "fremdgehen"
con = connect('emails.db')
cur = con.cursor()
cur.execute(f'INSERT INTO {page}_used SELECT * FROM {page} LIMIT 1')
con.commit()
con.close()
做点什么
删除第一行fremdgehen
def delete_table_row(page):
# page is "fremdgehen"
con = connect('emails.db')
cur = con.cursor()
cur.execute(f'DELETE FROM {page} ORDER BY id LIMIT 1')
con.commit()
con.close()
我认为删除第一行的查询是错误的。也许这样会更好:
Delete from fremdgehen where id IN (Select id from fremdgehen limit 1);
盗自:
我认为这是菜鸟犯的错误。我试了几个小时但找不到解决方案。
听说SQLite支持多线程访问一个文件。所以我在 Python:
中创建了第一个包含多个 table 的数据库def create_table(page):
con = connect('emails.db')
cur = con.cursor()
try:
cur.executescript(f'''
CREATE TABLE {page} (
id INTEGER,
email VARCHAR,
password VARCHAR,
time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
''')
con.commit()
except:
pass
con.close()
现在我的问题是我想做什么:
- 移动第一行 table e。 G。
fremdgehen
到fremdgehen_used
- 做点什么
- 删除第一行
fremdgehen
- 重复
我的程序做了什么:
- 将
fremdgehen
的第一行移动到fremdgehen_used
- 做点什么
它没有删除“fremdgehen”的第一行,只将一行移动到“fremdgehen_used”,而是给出以下错误:
Exception in thread
Thread-1reifer6:
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932, in _bootstrap_inner
self.run()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "c:\Users\Administrator\Desktop\de_1\v2\sub_bot\main.py", line 92, in main
delete_table_row(page)
File "c:\Users\Administrator\Desktop\de_1\main_bot\data.py", line 62, in delete_table_row
cur.execute(f'DELETE FROM {page} ORDER BY id LIMIT 1')
sqlite3.OperationalError: near "ORDER": syntax error
*这条消息三次因为三个线程都是运行
我的代码:
移动第一行 table e。 G。 fremdgehen
至 fremdgehen_used
def move_table(page):
# page is "fremdgehen"
con = connect('emails.db')
cur = con.cursor()
cur.execute(f'INSERT INTO {page}_used SELECT * FROM {page} LIMIT 1')
con.commit()
con.close()
做点什么
删除第一行fremdgehen
def delete_table_row(page):
# page is "fremdgehen"
con = connect('emails.db')
cur = con.cursor()
cur.execute(f'DELETE FROM {page} ORDER BY id LIMIT 1')
con.commit()
con.close()
我认为删除第一行的查询是错误的。也许这样会更好:
Delete from fremdgehen where id IN (Select id from fremdgehen limit 1);
盗自: