我認為這是一個菜鳥的錯誤。我嘗試了幾個小時,但找不到解決方案。
我聽說 SQLite 支持對檔案的多執行緒訪問。所以我在 Python 中創建了我的第一個包含多個表的資料庫:

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()
現在我的問題是我想要做什么:
- 移動表格的第一行,例如
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
*此訊息三次,因為三個執行緒正在運行

我的代碼:
移動表格的第一行,例如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()
uj5u.com熱心網友回復:
我認為洗掉第一行的查詢是錯誤的。也許這會更好:
Delete from fremdgehen where id IN (Select id from fremdgehen limit 1);
盜自:https ://stackoverflow.com/a/10381812/10110813
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/451658.html
下一篇:檢查SQLite中的表是否為空
