Я пытаюсь интегрировать PeeWee с SQL Relay, и я столкнулся с проблемой, когда PeeWee создает операторы SQL с двойными кавычками вокруг имен таблиц.
Вот пример кода
from peewee import BooleanField
from peewee import CharField
from peewee import DateField
from peewee import ForeignKeyField
from peewee import Model
from SQLRelay import PySQLRDB
from sqlrelay_ext import SQLRelayDatabase
DB = SQLRelayDatabase('test2', host='<hostname>', user='<username>', password='<password>')
class Person(Model):
name = CharField()
birthday = DateField()
is_relative = BooleanField()
class Meta:
database = DB
class Pet(Model):
owner = ForeignKeyField(Person, backref='pets')
name = CharField()
animal_type = CharField()
class Meta:
database = DB
DB.connect()
Person.create_table(safe=False)
Pet.create_table(safe=False)
Вот пример трассировки стека.
<code>Query: CREATE TABLE "person" ("id" INTEGER NOT NULL PRIMARY KEY, "name" VARCHAR(255) NOT NULL, "birthday" DATE NOT NULL, "is_relative" SMALLINT NOT NULL)
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/peewee.py", line 2576, in execute_sql
cursor.execute(sql, params or ())
File "/usr/local/lib/python3.6/site-packages/SQLRelay/PySQLRDB.py", line 177, in execute
raise DatabaseError('<pre>%s
'% the_error)
SQLRelay.PySQLRDB.DatabaseError:
Server message: Incorrect syntax near 'person'. severity(0) number(102) state(1) line(1) Server Name:ubuntu-mssql Procedure Name:
Хотя я знаю, что это стандарт ANSI, к сожалению, он не очень хорошо поддерживается многими клиентами баз данных. Есть ли конкретная причина, по которой PeeWee это делает? Можно ли создать собственный адаптер базы данных, который бы исключал двойные кавычки?
Любая помощь будет принята с благодарностью.