sqlalchemy '(sqlite3.OperationalError) рядом с "(": синтаксическая ошибка' - PullRequest
0 голосов
/ 02 октября 2019

Мы пытаемся перенести большую таблицу (больше, чем объем локальной памяти) из базы данных postgresql в локальную базу данных sqlite3 с использованием sqlalchemy, но мы получаем синтаксическую ошибку при попытке создать таблицу в базе данных sqlite3. Читая другие посты, рекомендуемые исправления, похоже, не относятся к этой ошибке. Есть ли какие-то подробности использования, которые нам здесь не хватает?

# reflect table from remote postgresql database
read_engine = create_engine('postgresql://dbusername:dbuserpassword@server/dbname')

meta = MetaData()
raw = Table('db_table', meta, autoload=True, autoload_with=read_engine)

# write table to local sqlite3 database
write_engine = create_engine('sqlite:///db_local.sqlite3')

table.create(write_engine)

Это ошибка, которую мы получаем:

OperationalError: (sqlite3.OperationalError) near "(": syntax error
[SQL: 
CREATE TABLE db_table (
    id INTEGER DEFAULT nextval('db_table_id_seq'::regclass) NOT NULL, 
    created_at TIMESTAMP, 
    updated_at TIMESTAMP, 
    data TEXT, 
    device_key TEXT, 
    format TEXT, 
    uuid TEXT, 
    CONSTRAINT db_table_pkey PRIMARY KEY (id)
)

]

1 Ответ

0 голосов
/ 02 октября 2019

Я думаю, что проблема в том, что SQLite не поддерживает DEFAULT nextval(...) - nextval() - это функция, специфичная для Postgres, которая не является частью базы данных SQLite.

Вам потребуется повторно-пишите заявление CREATE TABLE, чтобы использовать AUTOINCREMENT, я полагаю.

Раскрытие информации: я EnterpriseDB (EDB) сотрудник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...