首页 > 数据库 >Python-PostgreSQL主键自动填充报错:SAWarning: Column x is marked as a member of the primary key for table x&#

Python-PostgreSQL主键自动填充报错:SAWarning: Column x is marked as a member of the primary key for table x&#

时间:2024-05-11 12:19:20浏览次数:30  
标签:String Python 主键 Column key post True side

import datetime
from sqlalchemy import Column, String, inspect, Integer
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine

engine = create_engine(DATABASE_URL)
Base = declarative_base()
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

class Post(Base):
    __tablename__ = "post"
    id = Column(UUID, primary_key=True, index=True, autoincrement=False)
    time = Column(String)
    title = Column(String)
    content = Column(String)
    username = Column(String)

def create_post(post: dict) -> bool:
    db = SessionLocal()
    try:
        post = Post(data=post)
        db.add(post)
        db.commit()
        return True
    finally:
        db.close()

time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
create_post({"title": "test", "content": "test", "username": "admin", 'time': time})

测试数据库接口是否正常时发生报错:

SAWarning: Column 'post.id' is marked as a member of the primary key for table 'post', but has no Python-side or server-side default generator indicated, nor does it indicate 'autoincrement=True' or 'nullable=True', and no explicit value is passed.  Primary key columns typically may not store NULL.

在PostgreSQL内,post.id是作为主键,Data type = uuid, Deafult = gen_random_uuid(),并且数据类里也设置了 autoincrement=False,还是发生报错。经过尝试,发现:即使设置了默认填充的id,还是需要在后端这里指定:

id = Column(UUID(), primary_key=True, server_default=text("uuid_generate_v4()"))

顺利解决!

运行环境

PostgreSQL 16.2, compiled by Visual C++ build 1937, 64-bit
sqlalchemy~=2.0.30

标签:String,Python,主键,Column,key,post,True,side
From: https://www.cnblogs.com/zh-jp/p/18186256

相关文章

  • python-类型提示(type hinting)
    类型提示在Python3.5及更高版本中引入,能够让代码更具可读性和可维护性,并帮助静态类型检查工具进行代码分析。以下是关于类型提示的一些详细介绍和示例:类型提示概述基本语法:函数参数类型提示:deffunction_name(param:type)->return_type:返回值类型提示:deffunction_na......
  • 华为云发布CodeArts IDE for Python,极致优雅云原生开发体验
    近日,华为云正式发布CodeArtsIDEforPython,这是一款内置华为自主创新的Python语言服务,提供智能编程、灵活调试能力的可扩展桌面开发工具,为华为云开发者提供卓越Python编码体验。Python作为一种编程语言,广泛用于Web应用程序、软件开发、数据科学和机器学习(ML)。Python以其优......
  • 逻辑斯特回归原理及Python实现
    逻辑回归(LogisticRegression),又称为logistic回归分析,是一种广义的线性回归模型,通常用于解决分类问题。虽然名字里有“回归”,但实际上它属于机器学习中的监督学习方法。逻辑回归最初用于解决二分类问题,它也可以通过一些技巧扩展到多分类问题。在实际应用中,我们通常使用给定的训......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-46-鼠标滚轮操作
    1.简介有些网站为了节省流量和资源,提高加载效率,采用的是动态加载(懒加载)的,也就是当拖动页面右侧滚动条后会自动加载网页下面的内容,不拖动就不会加载的或者通过鼠标滚轮操作。2.wheel模拟鼠标滚动wheel模拟鼠标滚动,就是通过调度一个wheel事件。(滚轮事件如果不处理可能会导致滚动,......
  • python pip的各功能工作中使用说明
    根据pip命令行出来的有如下功能。installInstallpackages.downloadDownloadpackages.uninstallUninstallpackages.freezeOutputinstalledpackagesinrequirementsformat.list......
  • Python最全的外汇、黄金、贵金属数据API接口
    1、前言Python最全的股票数据API接口、外汇数据接口、贵金属黄金数据接口在当今数字化的金融世界中,股市API、外汇API接口很重要,通过股票API、外汇API接口接口获取准确且实时的股票数据对于投资者和程序开发者来说至关重要。Python作为一种广泛使用的编程语言,提供了丰富的工具和......
  • AI已来,我与AI一起用Python编写了一个消消乐小游戏
    在数字化与智能化的浪潮中,目前AI(人工智能)几乎在各行各业中发挥了不可忽略的价值,今天让我们也来体验一下AI的威力:我通过命令,一步一步的教AI利用Python编程语言打造了一款富有创意和趣味性的消消乐小游戏……本文Python消消乐游戏源代码:https://gitee.com/obullxl/Pytho......
  • Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列
    全文链接:https://tecdat.cn/?p=33885原文出处:拓端数据部落公众号本文描述了帮助客户使用马尔可夫链蒙特卡洛(MCMC)方法通过贝叶斯方法估计基本的单变量随机波动模型,就像Kim等人(1998年)所做的那样。定义模型以及从条件后验中抽取样本的函数的代码也在Python脚本中提供。  ......
  • Python入门教程(三)
    数据类型str(字符串)Python中最常用的数据类型就是字符串,其用途也很多,我们可以使用单引号‘’或者双引号“”来创建字符串。字符串是不可修改的。关于字符我们从创建、索引、切片、长度、遍历、删除、分割、清除空白、大小写转换、判断以等方面对字符串进行介绍。 Int(数字......
  • 【学习笔记】Python 装饰器
    装饰器是Python中一种非常强大的语法特性,它允许你在不改变函数代码的情况下,动态地增加功能。装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个新的函数。下面是Python装饰器的基本语法:defdecorator_function(original_function):defwrapper_function(*args,*......