任何人都可以帮我吗?我试图将 sqlacodegen 与 postgresql 结合使用来从我的数据库自动生成数据库模型,但它不断向我显示此导入错误
>sqlacodegen postgresql://postgres:j1234@localhost:4040/db1
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "C:\Users\user\AppData\Local\Programs\Python\Python311\Scripts\sqlacodegen.exe\__main__.py", line 4, in <module>
File "C:\Users\user\AppData\Local\Programs\Python\Python311\Lib\site-packages\sqlacodegen\main.py", line 11, in <module>
from sqlacodegen.codegen import CodeGenerator
File "C:\Users\user\AppData\Local\Programs\Python\Python311\Lib\site-packages\sqlacodegen\codegen.py", line 9, in <module>
from inspect import ArgSpec
ImportError: cannot import name 'ArgSpec' from 'inspect' (C:\Users\user\AppData\Local\Programs\Python\Python311\Lib\inspect.py)
Run Code Online (Sandbox Code Playgroud)
我正在使用 python 3.11、postgresql、sqlalchemy 2.0.15 和 sqlacodegen 2.3.0
我想从我的数据库中为我的 fastapi 自动生成数据库模型。我也对任何类型的 sqlacodegen 替代品持开放态度
我正在服务器上运行 PostgreSQL 数据库,并尝试使用 SQLAlchemy 连接到它。我发现sqlacodegen是一个很好的工具,可以自动生成元数据对象及其表。但是当我尝试运行时sqlacodgen postgresql+psycopg2://username:password@host:5432/dbname,我只得到这个:
# coding: utf-8
from sqlalchemy import MetaData
metadata = MetaData()
Run Code Online (Sandbox Code Playgroud)
连接字符串肯定是正确的,并且数据库已启动 - 我使用该连接字符串运行了一个小型 Python 脚本来连接到数据库,并用于execute对其运行查询,它返回的正是我所期望的。
我不知道从哪里开始调试这个。我可以做什么来看看出了什么问题?是否有某种sqlacodegen我缺少的要求?
执行此命令:
sqlacodegen <connection-url> --outfile db.py
Run Code Online (Sandbox Code Playgroud)
db.py包含生成的表:
t_table1 = Table(...)
Run Code Online (Sandbox Code Playgroud)
和班级:
Table2(Base):
__tablename__ = 'table2'
Run Code Online (Sandbox Code Playgroud)
问题是表只以一种方式生成 - 表或类.
我想让它只生成模型(类),但在提供的标志中我找不到这样的选项.任何的想法?
我不明白为什么我不能运行sqlacodegen.我希望用它来从我现有的PostgreSQL数据库创建一个SQLAlchemy模型.它不会运行.
当我打字sqlacodegen --help求助时,我得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: bad operand type for unary -: '_Helper'
Run Code Online (Sandbox Code Playgroud)
基本说明在这里.
我正在使用 SQLAlchemy 和sqlacodegen为我的 PostgreSQL 模型生成 ORM 类。但令我惊讶的是,以字母“s”结尾的表格导致了问题。
例如,我有一个如下表
employee_status
Run Code Online (Sandbox Code Playgroud)
为该表生成的 ORM 类如下
Class EmployeeStatu(Base):
__tablename__ = "employee_status"
col1 = Column(String(32))
Run Code Online (Sandbox Code Playgroud)
当表名中存在结尾字母“s”时,为什么类名中缺少结尾字母“s”?