1、安装psycopg2
pip install psycopg2
2、 连接pg数据库,获取游标
import psycopg2
conn = psycopg2.connect(database='CBRimgclassify', user='postgres', password='******', host='localhost', port='5432')
# 游标
cur = conn.cursor()
3、创建数据库
其中,引号里边是数据库语言,AttributeCharacteristics为创建表时取得名字,blue\red\nir等是列名,每个列名后边都要规定好对应的数据类型,这里我设置全为整数型int,execute表示执行数据库语言函数,每次执行时要提交conn.commit()命令,否则不会运行。
constraint uk_tbl_unique_a_b unique(blue,green,red,nir,swir1,swir2,class)确保每一行没有重复的数据。
cur.execute('create table AttributeCharacteristics(blue int,green int,red int,nir int,swir1 int,swir2 int,class int,constraint uk_tbl_unique_a_b unique(blue,green,red,nir,swir1,swir2,class));')
conn.commit()
4、插入数据到数据库
AttributeCharacteristics为表名,%s对应该表的每一列,这里要注意执行函数由execute()变成了executemany(),它们二者的作用都是用来执行数据库语言操作的函数,不同之处在于execute()用来实现单行操作,executemany()用来实现多行操作,具体选择哪一个取决于你要插入的数据是多行还是单行。
这里我的data为((63,31,35,67,82,35,1),(63,30,35,67,82,35,1),(62,30,35,67,82,35,1)...)
注:data必须是一个元组tuple类型。为了确保data是一个元组,用函数tuple(data)将data数据类型转换为tuple。
insertData = 'insert into AttributeCharacteristics values (%s,%s,%s,%s,%s,%s,%s)'
cur.executemany(insertData, data)
5、查询数据库中的数据
fetchall()返回多个元组,一个元组也就是一条行记录(row),多个元组就是多条行记录。
cur.execute("SELECT * FROM AttributeCharacteristics;")
rows = cur.fetchall() # all rows in table
for i in rows:
print(i)
conn.commit()
6、关闭数据库,释放内存
cur.close()
conn.close()