У меня есть две базы данных пользовательских данных, и мне нужно удалить дубликаты записей из db_a
, проверив один столбец (login
) в db_a and db_b
и, если он обнаружит, указанная c login
уже существует в db_b
он просто должен удалить дублирующую запись из db_a
. Для этого я подумал о DELETE Statement
в SQL, но он показывает мне ошибку -
sqlite3.OperationalError: no such column: user_old_info.login
Обе базы данных заполнены данными. Я использую Python 3 & SQLite3.
import sqlite3
db_a = sqlite3.connect('new_users.db')
c_a = db_a.cursor()
c_a.execute("CREATE TABLE IF NOT EXISTS user_info (first TEXT, last TEXT, login TEXT)")
db_a.commit()
db_b = sqlite3.connect('main.db')
c_b = db_b.cursor()
c_b.execute("CREATE TABLE IF NOT EXISTS user_old_info (first TEXT, last TEXT, login TEXT)")
db_b.commit()
c_a.execute('DELETE FROM user_info WHERE user_info.login = user_old_info.login')
db_a.commit()
Также пытался использовать оператор JOIN:
c_a.execute('SELECT login FROM user_info JOIN user_old_info ON user_old_info.login=user_info.login')
db_a.commit()
Ошибка одинакова в обоих случаях:
sqlite3.OperationalError: no such column: user_old_info.login
ОБНОВЛЕНИЕ: Я попробовал ЗАЯВЛЕНИЕ БАЗЫ ДАННЫХ ATTACH и вот та же ошибка ...
attachDatabaseSQL = "ATTACH DATABASE main.db AS checklogin"
dbSpec = ("main.db",)
c_a.execute(attachDatabaseSQL, dbSpec)
db_a.commit()
c_a.execute('DELETE FROM user_info WHERE user_info.login = checklogin.login')
db_a.commit()
Ошибка --->
line 16, in <module>
c_a.execute(attachDatabaseSQL, dbSpec)
sqlite3.OperationalError: no such column: main.db
Сделал это согласно this Прикрепите файл базы данных