基于python
更新时间:2024-07-01 14:39:47
安装 psycopg2
在 Centos 下,直接执行:
yum install python-psycopg2
安装好 psycopg2 之后,进行测试:
python -c "import psycopg2"
返回空,表示安装成功。
连接 AntDB
如果有使用 python 连接 postgres 的经验,那在 AntDB 中操作是完全一样的。
首先需要 import psycopg2,然后使用 psycopg2 提供的 conn 方法创建连接即可。代码示例如下:
import psycopg2
conn = psycopg2.connect(database="postgres", user="dang31", password="123", host="10.1.226.256", port="1234")
此时就创建好了一个连接,供后续使用。
在进行数据库操作之前,需要先建立一个 cursor,在 cursor 中进行相应的操作:
cur = conn.cursor()
创建表:
cur.execute("create t_test (id int,name text)")
插入数据:
cur.insert("insert into t_test values (1,'name')")
删除数据:
cur.execute("delete from t_test where id=%s",(3,))
更新数据:
cur.execute("update t_test set name=%s where id=%s",('c',1))
查询数据:
cur.execute("select * from t_test;")
rows = cur.fetchall()
pprint.pprint(rows)
完整的脚本如下:
#!/usr/bin/env python
\# -*- coding: UTF-8 -*-
import psycopg2
import sys
import pprint
adb_conn="dbname=postgres user=dang31 password=123 host=10.1.226.256 port=1234"
try:
conn = psycopg2.connect(adb_conn)
except psycopg2.Error as e:
print"Unable to connect!"
print e.pgerror
print e.diag.message_detail
sys.exit(1)
else:
print"Connected!"
cur = conn.cursor()
\#该程序创建一个光标将用于整个数据库使用Python编程。
print ("version:")
cur.execute("select version();")
rows = cur.fetchall()
pprint.pprint(rows)
print ("create table")
cur.execute("create table t_test (id int,name text);")
print ("insert into table")
cur.execute("insert into t_test (id,name) values (%s,%s)",(1,'a'))
cur.statusmessage
cur.execute("insert into t_test (id,name) values (%s,%s)",(3,'b'))
cur.mogrify("insert into t_test (id,name) values (%s,%s)",(3,'b'))
cur.execute("select * from t_test;")
print ("fetchone")
row = cur.fetchone()
pprint.pprint(row)
cur.execute("select * from t_test;")
rows = cur.fetchall()
print ("fetchall")
pprint.pprint(rows)
print ("delete from table")
cur.execute("delete from t_test where id=%s",(3,))
cur.execute("select * from t_test;")
rows = cur.fetchall()
pprint.pprint(rows)
print ("update table")
cur.execute("update t_test set name=%s where id=%s",('c',1))
cur.execute("select * from t_test;")
rows = cur.fetchall()
pprint.pprint(rows)
print ("drop table")
cur.execute("drop table if EXISTS t_test ");
conn.commit()
#connection.commit() 此方法提交当前事务。如果不调用这个方法,无论做了什么修改,自从上次调用
#commit()是不可见的,从其他的数据库连接。
conn.close()
#connection.close() 此方法关闭数据库连接。请注意,这并不自动调用commit()。如果你只是关闭数 据库连接而不调用commit()方法首先,那么所有更改将会丢失
输出结果为:
Connected!
version:
[('PostgreSQL 11.6 ADB 5.0.0 37c61ca18f on x86_64-pc-linux-gnu, compiled by gcc
(GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit',)]
create table
insert into table
fetchone
(3, 'b')
fetchall
[(1, 'a'), (3, 'b')]
delete from table
[(1, 'a')]
update table
[(1, 'c')]
drop table
更多的操作,可以参考psycopg 的文档:https://www.psycopg.org/docs/index.html
问题反馈