# psycopg2
engine=create_engine('postgresql+psycopg2://scott:tiger@localhost/mydatabase')#

python 连接postgresql使用psycopg2作为默认的DBAPI
The first time a method like Engine.execute()orEngine.connect()is called, the Engine establishes a real DBAPI connection to the database, which is then used to emit the SQL.
Thecreate_engine()function produces anEngineobject basedon a URL.
 1 from sqlalchemy.engine import create_engine
 2 from sqlalchemy.schema import MetaData, Table, Column, ForeignKey, Sequence
 3 from sqlalchemy.types import *
 4 
 5 engine = create_engine('postgres://test:test@localhost/test', echo=True)
 6 
 7 metadata = MetaData()
 8 metadata.bind = engine
 9 
10 book_table = Table('book', metadata,
11     Column('id', Integer, Sequence('seq_pk'), primary_key=True),
12     Column('title', Unicode(255), nullable=False),
13 )
14 
15 author_table = Table('author', metadata,
16     Column('id', Integer, Sequence('seq_pk'), primary_key=True),
17     Column('name', Unicode(255), nullable=False),
18 )
19 
20 bookauthor_table = Table('bookauthor', metadata,
21    Column('book_id', Integer, ForeignKey('book.id'), nullable=False),
22    Column('author_id', Integer, ForeignKey('author.id'), nullable=False),
23)
24
25metadata.create_all(checkfirst=True)

首先我们还是create_engine,然后新建一个MetaData对象,把engine绑上去,接下来,开始在metadata中定义表结构(metadata由Table构造函数传入),我们这里定义了3张表,分别是book、author和bookauthor关系表(“多对多”),其中新建一个Sequence对象,专门处理主键生成。最后我们通过执行metadata.create_all()创建数据库表,参数checkfirst=True表示如果数据库相关对象已经存在,则不重复执行创建。

对于已经存在于数据库中的表,我们可以通过传入autoload=True参数到Table构造函数的方式来加载现有的表结构到metadata中,而不必挨个儿再写一遍Column清单。

看到这儿,你也许觉得挺麻烦,不是么?Django和RoR都是可以直接定义数据model类,顺带就把schema也定义了,而不是像这样单独去写表结构的schema,显得很"底层"。确实,这样用SQLAlchemy并不是最优化的,SQLAlchemy本身并不会自动的帮你做很多事,但它基础打得很牢。如果你感兴趣,也可以先去看一下SQLAlchemy的扩展模块Elixir,通过Elixir,你可以像Ruby on Rails那样定义出实体和关系("Active Record")。

  1. 文/人世间(简书作者)
  2. 原文链接:http://www.jianshu.com/p/e6bba189fcbd
  3. 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  4. # -*- coding: utf-8 -*-
  5. __author__ = 'ghost'
  6. from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey
  7. # 连接数据库
  8. engine = create_engine("mysql://root:@localhost:3306/webpy?charset=utf8",encoding="utf-8", echo=True)
  9. # 获取元数据
  10. metadata = MetaData()
  11. # 定义表
  12. user = Table('user', metadata,
  13. Column('id', Integer, primary_key=True),
  14. Column('name', String(20)),
  15. Column('fullname', String(40)),
  16. )
  17. address = Table('address', metadata,
  18. Column('id', Integer, primary_key=True),
  19. Column('user_id', None, ForeignKey('user.id')),
  20. Column('email', String(60), nullable=False)
  21. )
  22. # 创建数据表,如果数据表存在,则忽视
  23. metadata.create_all(engine)
  24. # 获取数据库连接
  25. conn = engine.connect()
sqlalchemy连接postgresql数据库
import sqlalchemyimport pnosql

class Confsql:    def __init__(self,dbstr="postgresql+psycopg2://postgres:root@localhost:5432/Usermodel"):

        self.engine = sqlalchemy.create_engine(dbstr, echo=True)        self.metadata = sqlalchemy.MetaData()        self.metadata.bind = self.engine

def runquery(self, sqlstr):        s = sqlstr        result = self.engine.execute(sqlstr)        rows = result.fetchall()        result.close()

需要对返回的数据进行修改才行
def runsp(self,sqlstr):    s = sqlstr    result = self.engine.execute(sqlstr)    rows = result.fetchall()    result.close()

    result  = []    for row in rows:        x = {}        x["barcode"] = row[0]        x["spcode"] = row[1]        x["spname"] = row[2]        x["spformat"] = row[3]        x["height"] = row[4]        x["width"] = row[5]        x["thickness"] = row[6]

        x["comp"] = 'youke'        x["parentcomp"] = 'yz'        x["_id"] = str(uuid.uuid1())

        result.append(x)

    return result

SqlAlchemy应用
  1. from sqlalchemy import create_engine,MetaData,Table,select
  2. engine = create_engine('postgresql+psycopg2://postgres:root@localhost:5432/blogdb')
  3. metadata = MetaData()
  4. metadata.bind = engine
  5. auth_permission = Table('auth_permission',metadata,autoload = True)
查询操作

  1. def query_code(codename):
  2. info = {'name':'','codename':''}
  3. s = select([auth_permission.c.codename, auth_permission.c.name, ]).where(auth_permission.c.codename == codename)
  4. codename_query = engine.execute(s)
  5. for row in codename_query:
  6. info['codename'] = row[0]
  7. info['name'] = row[1]
  8. codename_query.close()
  9. return info
修改操作

  1. #修改权限
  2. def updata(codename,name):
  3. s = auth_permission.update().where(auth_permission.c.codename == codename).values(name=name,codename=codename)
  4. c = engine.execute(s)
  5. c.close()
添加操作

  1. # 添加权限
  2. def add(codename,name,content_type_id):
  3. s = auth_permission.insert().values(name=name,codename=codename,content_type_id=content_type_id)
  4. c = engine.execute(s)
  5. c.close()
删除操作

  1. # 删除权限
  2. def delete(codename):
  3. s = auth_permission.delete().where(auth_permission.c.codename == codename)
  4. c = engine.execute(s)
  5. c.close()

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/wuqingzangyue/p/5770027.html

连接postgresql相关推荐

  1. Python3连接PostgreSQL(10.5)数据库

    一.Psycopg简介 Psycopg是Python编程语言中最流行的PostgreSQL数据库适配器.它的主要功能是完整实现Python DB API 2.0规范和线程安全(多个线程可以共享相同的连 ...

  2. Entity Freamwork 6连接PostgreSql数据库

    原文 Entity Freamwork 6连接PostgreSql数据库 开发环境 VS 2015  Update 1   Postgre Sql 9.4 使用过程 1.使用Nuget在项目中添加对E ...

  3. java编译POSTGRESQL_Java连接PostgreSQL数据库(安装环境 + 简易测试代码)

    --[楼主比较啰嗦, 会列出几个异常情况以供参考]-- 1, 安装环境 1.0 Win7 32位 1.2 编译器:  Spring Tool Suite 3.7.1  官网下载地址:http://sp ...

  4. Entity Framework 4.3.1 Code First 连接 PostgreSQL 9.2.3 小结

    在CentOS6.3上源码编译装好PostgreSQL9.2.3,下一步尝试将数据库从Microsoft SQL Server 2000迁移到PostgreSQL,并且尝试使用Entity Frame ...

  5. typescript-koa-postgresql 实现一个简单的rest风格服务器 —— 连接 postgresql 数据库...

    接上一篇,这里使用 sequelize 来连接 postgresql 数据库 1.安装 sequelize,数据库驱动 pg yarn add sequelize sequelize-typescri ...

  6. python连接postgresql数据库

    连接postgresql数据库 pip install psycopg2 ## 导入psycopg2包 import psycopg2 ## 连接到一个给定的数据库 conn = psycopg2.c ...

  7. 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

    说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...

  8. PHP PDO连接PostgreSQL报错 SCRAM authentication requires libpq version 10 or above in解决

    文章目录 一.PHP pdo方式连接PostgreSQL数据库 二.连接时发现如下报错 三.解决办法 一.PHP pdo方式连接PostgreSQL数据库 function pdo_query_pos ...

  9. navicat连接PostgreSQL报:column “rolcatupdate” does not exist ...错误的解决办法

    avicat premium 连接PostgreSQL出现: column "rolcatupdate" does not exist ... 错误如图: 解决方案: 看看你的na ...

最新文章

  1. 实验十 配置EIGRP协议
  2. 算法积累之算法时间复杂度
  3. 微软小冰评分接口_微软小冰测颜值准不准?郑爽才得6.3分,较真你就输了
  4. android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事
  5. 注册域名需要资格吗_考教师资格证需要居住证吗?
  6. C++ Priority Queues(优先队列)
  7. assert.notStrictEqual()详解
  8. mysql group by自定义_mysql – GROUP BY和自定义顺序
  9. 资源放送丨《容灾体系建设之“独孤九式”》PPT视频
  10. 学习笔记之51单片机键盘篇(非编码键盘与编码键盘、非编码键盘的扫描方式、独立键盘、矩阵键盘)
  11. USACO 1.5 Number Triangles
  12. (转)Mysql 增删用户
  13. 【信息安全】EDR、HIDS、NDR、MDR、XDR 区别与联系
  14. UNIX操作系统学习(一)
  15. 余世维 有效沟通3
  16. RabbitMQ和fegin补充
  17. 28、完美的RestApi
  18. JavaScript的输出与变量
  19. 详解Python正则表达式(含丰富案例)
  20. 执行kubectl get csr显示NoT found.

热门文章

  1. Oracle 11g ora 15018,oracle 11gR2 RAC root.sh 错误 ORA-15072 ORA-15018
  2. json模拟数据怎么用_在使用axios获取自己模拟的json数据是踩到的坑
  3. 小程序制作预算_小程序商城制作多少钱
  4. 微信第三方扫描登录 java源代码_微信开放平台基于网站应用授权登录源码(java)...
  5. 选中内容_Excel – 选中的单元格自动显示在A1,报表演示数据再多也能看清
  6. 6s在c语言中的用法,C语言中assert的用法讲解
  7. java切片_ java中一个极其强悍的新特性Stream详解(非常实用)
  8. java el ognl_EL和OGNL表达式的区分
  9. 【JAVA基础篇】对象初始化过程
  10. Oracle/mysql联合查询union、union all