Ошибка пересечения SQLAlchemy

0

user1 = User(username='john')

user2 = User(username='jim')

user1.intersect(user2).all() выдает ошибку при использовании MariaDB, но не с SQLite.

Здесь ошибка:

sqlalchemy.exc.ProgrammingError: (_mysql_exceptions.ProgrammingError) (1064, "У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с" INTERSECT SELECT user.id AS user_id ", user.username AS user_username, user.email 'at line 4 ") [SQL:' SELECT anon_1.user_id AS anon_1_user_id, anon_1.user_username AS anon_1_user_username, anon_1.user_email AS anon_1_user_email, anon_1.user_password AS anon_1_user_password, anon_1.user_first_name AS anon_1_user_first_name, anon_1.user_last_name А.С. anon_1_user_last_name, anon_1.user_about_me А.С. anon_1_user_about_me, anon_1.user_last_seen А.С. anon_1_user_last_seen, anon_1.user_member_since AS anon_1_user_member_since, anon_1.user_last_message_read_time А.С. anon_1_user_last_message_read_time, anon_1.user_last_request_read_time А.С. anon_1_user_last_request_read_time\Nfrom (SELECT user.id AS user_id, user.username AS user_username, user.email AS user_email, user.password AS user_passw ord, user.first_name AS user_first_name, user.last_name AS user_last_name, user.about_me AS user_about_me, user.last_seen AS user_last_seen, user.member_since AS user_member_since, user.last_message_read_time AS user_last_message_read_time, user.last_request_read_time AS user_last_request_read_time\nFROM пользователь, дружба \nWHERE friendships.user_id =% s AND friendships.friend_id = user.id INTERSECT SELECT user.id AS user_id, user.username AS user_username, user.email AS user_email, user.password AS user_password, user.first_name AS user_first_name, user.last_name AS user_last_name, user.about_me AS user_about_me, user.last_seen AS user_last_seen, user.member_since AS user_member_since, user.last_message_read_time AS user_last_message_read_time, user.last_request_read_time AS user_last_request_read_time\nFROM пользователь, дружба \nWHERE friendships.user_id =% s AND friendships.friend_id = пользователь.id) AS anon_1 '] [параметры: (1, 2)] (Исходная информация об этой ошибке: http://sqlalche.me/e/f405)

Теги:
sqlalchemy

1 ответ

0
Лучший ответ

MySQL не поддерживает INTERSECT. Sqlite делает. MariaDB делает с версии 10.3.

  • 0
    Вы знаете об обходном пути?
  • 1
    Пересечение можно рассматривать как «особый случай» (естественного) самостоятельного объединения всех столбцов (или только ключевых столбцов).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню