Python sqlalchemy 插入数据失败 ?
这完全没任何提示就失败了是为什么?
python">from sqlalchemy.orm import sessionmakerfrom sqlalchemy import create_engine, URL
from sys_user import SysUser
# 创建数据库连接
engine = create_engine(URL.create("mysql+pymysql", **{
"host": "...",
"port": 3306,
"username": "root",
"password": "...",
"database": "...",
}), echo=True)
# 创建 sessionmaker 对象
Session = sessionmaker(bind=engine,autocommit=False)
# 创建 session
session = Session()
# 创建对象
obj = SysUser(account="cc") # 根据你的模型类进行替换
# 将对象添加到 session
success = session.add(obj)
# 判断是否插入成功
if success:
# 提交事务
session.commit()
print("Object inserted successfully.")
else:
print("Failed to insert object.")
- 模型
from sqlalchemy import String, DateTime, Integerfrom sqlalchemy.orm import Mapped, mapped_column
import datetime
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass
class SysUser(Base):
__tablename__ = 'table_aaa'
id: Mapped[int] = mapped_column(primary_key=True)
account: Mapped[str] = mapped_column(String(100))
- 实际情况:压根连 add 方法都没触发:(删除了部分非必要代码)
- 调试情况:
问题是为什么一定要赋值之后才能生效呢?方法不是已经返回了对象么?
回答:
解决方案找打了,令人窒息:必须要用 with
with self.database() as db: db.add(SysUser(mobile="11"))
db.commit()
回答:
在你的代码中,插入数据失败的原因可能是因为你在创建对象时没有设置id属性的值。由于id在模型类中被定义为主键,并且没有设置自动增长(autoincrement)的选项,因此在插入数据时需要显式地给id赋值。
修改你的代码,将创建对象的部分改为:
# 创建对象obj = SysUser(id=1, account="cc") # 根据你的需求设置id的值
# 将对象添加到 session
session.add(obj)
请根据你的需求设置id的值,确保它在数据库中是唯一的。然后再次运行代码,插入数据应该会成功。
以上是 Python sqlalchemy 插入数据失败 ? 的全部内容, 来源链接: utcz.com/p/938987.html