相关文章推荐
飘逸的蘑菇  ·  中国建设银行-大连市分行·  1 周前    · 
爱听歌的咖啡豆  ·  辽宁日报·  1 年前    · 
小眼睛的羊肉串  ·  2016年西北区域新能源并网运行情况通报-- ...·  1 年前    · 
坏坏的皮蛋  ·  css选择器测试2-用ul和li简单排版 ...·  1 年前    · 
千年单身的佛珠  ·  利比亚部分油田或恢复产油-新华网·  1 年前    · 
Code  ›  python - Postgres/psycopg2 - 插入字符串数组 -
python 数组 psycopg2
https://segmentfault.com/q/1010000043265985
大力的饺子
3 年前
segmentfault segmentfault
注册登录
问答 博客 标签 活动
发现
✓ 使用“Bing”搜本站 使用“Google”搜本站 使用“百度”搜本站 站内搜索
注册登录
  1. 首页
  2. 问答
  3. Stack Overflow 翻译
  4. 问答详情

Postgres/psycopg2 - 插入字符串数组

社区维基
1
发布于
1 月 8 日
新手上路,请多包涵

我将 Postgres 9 和 Python 2.7.2 与 psycopg2 一起使用,并尝试插入一个字符串值数组,并正确转义引号。样本:

 metadata = {"Name": "Guest", "Details": "['One', 'Two', 'Three']"}
cur.execute("insert into meta values ('%s');" % metadata)

抛出异常:

 psycopg2.ProgrammingError: syntax error at or near "One"
LINE 1: "Details": "['One...

我也试过使用 Postgres 的 E 和反斜杠一起转义,但还没有找到正确的组合。想法?

原文由 Growth Mindset 发布,翻译遵循 CC BY-SA 4.0 许可协议

Stack Overflow 翻译 python postgresql psycopg2
阅读 302
2 个回答
得票 最新
社区维基
1
发布于
1 月 8 日
✓ 已被采纳

您必须让 psycopg 为您绑定参数:不要尝试自己引用它们。

Psycopg 自动将 python 字符串列表转换为 postgres 数组。检查 https://www.psycopg.org/docs/usage.html#lists-adaptation

原文由 piro 发布,翻译遵循 CC BY-SA 4.0 许可协议

社区维基
1
发布于
1 月 8 日

当你想通过 SQL 将数组插入到 postgreSQL 数据库中时,你可以这样做:

 INSERT INTO tablename VALUES ('{value1,value2,value3}');

注意: 您需要用单引号将花括号括起来!所以实际上你正在将一个特殊的“数组”语法的 String/Varchar 传递给数据库

如果我将你的代码输入到 python 解析器中,我会得到如下信息:

 '{'Name': 'Guest', 'Details': "['One', 'Two', 'Three']"}'

但是 PostgreSQL 期望这样的事情:

 '{"Name","Guest","Details",{"One","Two","Three"}}'

查看数组手册: http ://www.postgresql.org/docs/9.0/static/arrays.html

 
推荐文章
飘逸的蘑菇  ·  中国建设银行-大连市分行
1 周前
爱听歌的咖啡豆  ·  辽宁日报
1 年前
小眼睛的羊肉串  ·  2016年西北区域新能源并网运行情况通报---国家能源局
1 年前
坏坏的皮蛋  ·  css选择器测试2-用ul和li简单排版 - 花谢悦神 - 博客园
1 年前
千年单身的佛珠  ·  利比亚部分油田或恢复产油-新华网
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号