db = psycopg2.connect(connection) cur = db.cursor() #创建表 sql_stat = "CREATE TABLE test_class_id(id INT PRIMARY kEY NOT NULL, test_class TEXT, test_id CHAR(10))"; cur.execute(sql_stat) #插入表 sql_stat = "insert into test_class_id(id, test_class, test_id) values (1, 'a', '3')" cur.execute(sql_stat)
sql_stat = "insert into test_class_id(id, test_class, test_id) values (2, 'a', '3')" cur.execute(sql_stat) #更改字段值 sql_stat = "update test_class_id set test_class='b' where id=1" cur.execute(sql_stat)
db.commit()
if __name__ == "__main__": user = 'postgres' pwd = '123456' host = 'localhost' port = '5432' dbname = 'AntFlaskDB' main(user, pwd, host, port, dbname) print("Done~~")
执行后的结果:
改用records
安装records
pip install records
链接PostgreSQL的几种方式
"""PostgreSQL""" # default db = records.Database('postgresql://scott:tiger@localhost/mydatabase') # psycopg2 db = records.Database('postgresql+psycopg2://scott:tiger@localhost/mydatabase') # pg8000 db = records.Database('postgresql+pg8000://scott:tiger@localhost/mydatabase')
创建表:
import records
# psycopg2username:password@localhost db = records.Database('postgresql+psycopg2://postgres:123456@localhost:5432/AntFlaskDB') rows = db.query('CREATE TABLE ceshi(id INT PRIMARY kEY NOT NULL, test_class TEXT, test_id CHAR(10))')
查询数据:
#!/usr/bin/evn python # coding=utf-8 from werkzeug.serving import run_simple
# -*- coding: utf-8 -*-
if __name__ == "__main__":
import records
# psycopg2username:password@localhost db = records.Database('postgresql+psycopg2://postgres:123456@localhost:5432/AntFlaskDB') rows = db.query("select * from test_class_id") for row in rows: print(row)
db.query可以操作一切
甚至还可以直接导出相关结果集
PS:依赖pandas包,需要安装一下
pandas,
tabli
pyyaml
xlrd
xlwt
如:
if __name__ == "__main__":
import records
# psycopg2username:password@localhost db = records.Database('postgresql+psycopg2://postgres:123456@localhost:5432/AntFlaskDB') rows = db.query("select * from test_class_id") # 查看结果集 print(rows.dataset) print(rows.export('csv')) print(rows.export('yaml')) print(rows.export('json')) # Pandas DataFrame rows.export('df') # excel with open('report.xls', 'wb') as f: f.write(rows.export('xls'))
from backend.models.dbhelper import database, session_scope,session_scope_atomic from peewee import * from playhouse.shortcuts import model_to_dict, dict_to_model