我正在使用: SQLAlchemy==1.3.0 sqlalchemy-spanner==1.6.2 尝试 https://github.com/googleapis/python-spanner-sqlalchemy/tree/main“创建表”中的示例给我: google.api_core.exceptions.InvalidArgument:400 [错误]“PRIMARY”处或附近的语法错误;解析 DDL 语句失败。
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
PROJECT = "prj***"
INSTANCE = "***"
DATABASE = "**"
URL = f"spanner+spanner:///projects/{PROJECT}/instances/{INSTANCE}/databases/{DATABASE}"
engine = create_engine(URL)
metadata = MetaData(bind=engine)
table = Table(
"users",
metadata,
Column("user_id", String(16), primary_key=True),
Column("user_name", String(16), nullable=False),
)
table.create()
我尝试了几个不同的列,使用类,然后使用 Base.metadata.create_all()。有时它会说“user”列也不存在,所以我认为它翻译了 DDL 语句错误。非常感谢!
您使用的 URL 似乎是 1.4 版本 根据提供的文档,1.3 和 1.4 的 URL 采用以下格式:
# for SQLAlchemy 1.3:
spanner:///projects/project-id/instances/instance-id/databases/database-id
# for SQLAlchemy 1.4:
spanner+spanner:///projects/project-id/instances/instance-id/databases/database-id