Python sqlalchemy 插入数据失败 ?

这完全没任何提示就失败了是为什么?

python">from sqlalchemy.orm import sessionmaker

from 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, Integer

from 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 方法都没触发:(删除了部分非必要代码)

Python  sqlalchemy 插入数据失败 ?

Python  sqlalchemy 插入数据失败 ?

Python  sqlalchemy 插入数据失败 ?

Python  sqlalchemy 插入数据失败 ?

  • 调试情况:

Python  sqlalchemy 插入数据失败 ?

问题是为什么一定要赋值之后才能生效呢?方法不是已经返回了对象么?


回答:

解决方案找打了,令人窒息:必须要用 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

回到顶部