连接postgresql
# psycopg2
engine=create_engine('postgresql+psycopg2://scott:tiger@localhost/mydatabase')#
Engine.execute()
orEngine.connect()
is called, the Engine
establishes a real DBAPI connection to the database, which is then used to emit the SQL.
create_engine()
function produces anEngine
object basedon a URL.
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")。
文/人世间(简书作者)
原文链接:http://www.jianshu.com/p/e6bba189fcbd
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
# -*- coding: utf-8 -*-
__author__ = 'ghost'
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey
# 连接数据库
engine = create_engine("mysql://root:@localhost:3306/webpy?charset=utf8",encoding="utf-8", echo=True)
# 获取元数据
metadata = MetaData()
# 定义表
user = Table('user', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(20)),
Column('fullname', String(40)),
)
address = Table('address', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', None, ForeignKey('user.id')),
Column('email', String(60), nullable=False)
)
# 创建数据表,如果数据表存在,则忽视
metadata.create_all(engine)
# 获取数据库连接
conn = engine.connect()
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
from sqlalchemy import create_engine,MetaData,Table,select
engine = create_engine('postgresql+psycopg2://postgres:root@localhost:5432/blogdb')
metadata = MetaData()
metadata.bind = engine
auth_permission = Table('auth_permission',metadata,autoload = True)
def query_code(codename):
info = {'name':'','codename':''}
s = select([auth_permission.c.codename, auth_permission.c.name, ]).where(auth_permission.c.codename == codename)
codename_query = engine.execute(s)
for row in codename_query:
info['codename'] = row[0]
info['name'] = row[1]
codename_query.close()
return info
#修改权限
def updata(codename,name):
s = auth_permission.update().where(auth_permission.c.codename == codename).values(name=name,codename=codename)
c = engine.execute(s)
c.close()
# 添加权限
def add(codename,name,content_type_id):
s = auth_permission.insert().values(name=name,codename=codename,content_type_id=content_type_id)
c = engine.execute(s)
c.close()
# 删除权限
def delete(codename):
s = auth_permission.delete().where(auth_permission.c.codename == codename)
c = engine.execute(s)
c.close()
转载于:https://www.cnblogs.com/wuqingzangyue/p/5770027.html
连接postgresql相关推荐
- Python3连接PostgreSQL(10.5)数据库
一.Psycopg简介 Psycopg是Python编程语言中最流行的PostgreSQL数据库适配器.它的主要功能是完整实现Python DB API 2.0规范和线程安全(多个线程可以共享相同的连 ...
- Entity Freamwork 6连接PostgreSql数据库
原文 Entity Freamwork 6连接PostgreSql数据库 开发环境 VS 2015 Update 1 Postgre Sql 9.4 使用过程 1.使用Nuget在项目中添加对E ...
- java编译POSTGRESQL_Java连接PostgreSQL数据库(安装环境 + 简易测试代码)
--[楼主比较啰嗦, 会列出几个异常情况以供参考]-- 1, 安装环境 1.0 Win7 32位 1.2 编译器: Spring Tool Suite 3.7.1 官网下载地址:http://sp ...
- Entity Framework 4.3.1 Code First 连接 PostgreSQL 9.2.3 小结
在CentOS6.3上源码编译装好PostgreSQL9.2.3,下一步尝试将数据库从Microsoft SQL Server 2000迁移到PostgreSQL,并且尝试使用Entity Frame ...
- typescript-koa-postgresql 实现一个简单的rest风格服务器 —— 连接 postgresql 数据库...
接上一篇,这里使用 sequelize 来连接 postgresql 数据库 1.安装 sequelize,数据库驱动 pg yarn add sequelize sequelize-typescri ...
- python连接postgresql数据库
连接postgresql数据库 pip install psycopg2 ## 导入psycopg2包 import psycopg2 ## 连接到一个给定的数据库 conn = psycopg2.c ...
- 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...
- PHP PDO连接PostgreSQL报错 SCRAM authentication requires libpq version 10 or above in解决
文章目录 一.PHP pdo方式连接PostgreSQL数据库 二.连接时发现如下报错 三.解决办法 一.PHP pdo方式连接PostgreSQL数据库 function pdo_query_pos ...
- navicat连接PostgreSQL报:column “rolcatupdate” does not exist ...错误的解决办法
avicat premium 连接PostgreSQL出现: column "rolcatupdate" does not exist ... 错误如图: 解决方案: 看看你的na ...
最新文章
- 实验十 配置EIGRP协议
- 算法积累之算法时间复杂度
- 微软小冰评分接口_微软小冰测颜值准不准?郑爽才得6.3分,较真你就输了
- android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事
- 注册域名需要资格吗_考教师资格证需要居住证吗?
- C++ Priority Queues(优先队列)
- assert.notStrictEqual()详解
- mysql group by自定义_mysql – GROUP BY和自定义顺序
- 资源放送丨《容灾体系建设之“独孤九式”》PPT视频
- 学习笔记之51单片机键盘篇(非编码键盘与编码键盘、非编码键盘的扫描方式、独立键盘、矩阵键盘)
- USACO 1.5 Number Triangles
- (转)Mysql 增删用户
- 【信息安全】EDR、HIDS、NDR、MDR、XDR 区别与联系
- UNIX操作系统学习(一)
- 余世维 有效沟通3
- RabbitMQ和fegin补充
- 28、完美的RestApi
- JavaScript的输出与变量
- 详解Python正则表达式(含丰富案例)
- 执行kubectl get csr显示NoT found.
热门文章
- Oracle 11g ora 15018,oracle 11gR2 RAC root.sh 错误 ORA-15072 ORA-15018
- json模拟数据怎么用_在使用axios获取自己模拟的json数据是踩到的坑
- 小程序制作预算_小程序商城制作多少钱
- 微信第三方扫描登录 java源代码_微信开放平台基于网站应用授权登录源码(java)...
- 选中内容_Excel – 选中的单元格自动显示在A1,报表演示数据再多也能看清
- 6s在c语言中的用法,C语言中assert的用法讲解
- java切片_ java中一个极其强悍的新特性Stream详解(非常实用)
- java el ognl_EL和OGNL表达式的区分
- 【JAVA基础篇】对象初始化过程
- Oracle/mysql联合查询union、union all