使用Psycopg2向PostgreSQL插入数据仅存入单个字符的问题
PostgreSQL插入数据仅单个字符存入的解决方法
首要排查:表字段长度限制
这是导致字符串被截断的最常见原因。检查public.users表中email和password字段的定义,如果字段被设置为CHAR(1)或VARCHAR(1),任何长字符串都会被强制截断为单个字符。
- 查看字段定义:
SELECT column_name, data_type, character_maximum_length FROM information_schema.columns WHERE table_name = 'users' AND table_schema = 'public';
- 修改字段长度(示例调整为支持255位字符):
ALTER TABLE public.users ALTER COLUMN email TYPE VARCHAR(255), ALTER COLUMN password TYPE VARCHAR(255);
代码规范修正(非主因,但建议调整)
你的代码中val变量末尾多了一个冗余逗号,虽然Python会正确识别为4元素元组(与SQL占位符数量匹配),但规范写法更易维护:
val = (email, password, datetime.datetime.now(), False)
验证请求数据完整性
确认请求头传递的email和password是否为完整字符串,可在代码中添加调试打印:
print(f"Received email: {email}, password: {password}")
如果打印结果就是单个字符,问题出在请求发送端,需检查请求构造逻辑。
内容的提问来源于stack exchange,提问作者Arjunjit Bagri
相关产品推荐
相关产品推荐

