python学习之day11

目录

SqlAlchemy



SqlAlechemy

SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。

Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如:

MySQL-Python
    mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>

pymysql
    mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]

MySQL-Connector
    mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname>

cx_Oracle
    oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]

更多详见:http://docs.sqlalchemy.org/en/latest/dialects/index.html

创建表(老方法)

from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey

metadata = MetaData()

user = Table(‘user‘, metadata,
    Column(‘id‘, Integer, primary_key=True),
    Column(‘name‘, String(20)),
)

color = Table(‘color‘, metadata,
    Column(‘id‘, Integer, primary_key=True),
    Column(‘name‘, String(20)),
)   #表结构
engine = create_engine("mysql+pymysql://root:[email protected]:3306/mydb?charset=utf8", max_overflow=5)#链接数据库
metadata.create_all(engine)

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3
 4 from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey
 5
 6 metadata = MetaData()
 7
 8 user = Table(‘user‘, metadata,
 9     Column(‘id‘, Integer, primary_key=True),
10     Column(‘name‘, String(20)),
11 )
12
13 color = Table(‘color‘, metadata,
14     Column(‘id‘, Integer, primary_key=True),
15     Column(‘name‘, String(20)),
16 )
17 engine = create_engine("mysql+mysqldb://root:[email protected]:3306/s11", max_overflow=5)
18
19 conn = engine.connect()
20
21 # 创建SQL语句,INSERT INTO "user" (id, name) VALUES (:id, :name)
22 conn.execute(user.insert(),{‘id‘:7,‘name‘:‘seven‘})
23 conn.close()
24
25 # sql = user.insert().values(id=123, name=‘wu‘)
26 # conn.execute(sql)
27 # conn.close()
28
29 # sql = user.delete().where(user.c.id > 1)
30
31 # sql = user.update().values(fullname=user.c.name)
32 # sql = user.update().where(user.c.name == ‘jack‘).values(name=‘ed‘)
33
34 # sql = select([user, ])
35 # sql = select([user.c.id, ])
36 # sql = select([user.c.name, color.c.name]).where(user.c.id==color.c.id)
37 # sql = select([user.c.name]).order_by(user.c.name)
38 # sql = select([user]).group_by(user.c.name)
39
40 # result = conn.execute(sql)
41 # print result.fetchall()
42 # conn.close()

增删改查

创建表(新方法)

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine,and_,or_

Base = declarative_base()       #生成一个SqlORM的基类
engine = create_engine("mysql+mysqldb://root:[email protected]:3306/s12",echo=True)

class Host(Base):
    __tablename__ = ‘hosts‘
    id = Column(Integer,primary_key=True,autoincrement=True)
    hostname = Column(String(64),unique=True,nullable=False)
    ip_addr = Column(String(128),unique=True,nullable=False)
    port = Column(Integer,default=22)

Base.metadata.create_all(engine)     #创建所有表结构

if __name__ == ‘__main__‘:
    SessionCls = sessionmaker(bind=engine)  #创建与数据库的会话
    session = SessionCls()  #链接的实例
    # add(添加数据)
    # h2 = Host(hostname=‘localhost‘,ip_addr=‘127.0.0.1‘)
    # h3 = Host(hostname=‘ubuntu5‘,ip_addr=‘192.168.1.24‘,port=20000)
    # session.add(h2)
    # session.add(h3)
    # session.add_all([h2,h3])
    # update(修改数据)
    # obj = session.query(Host).filter(Host.hostname==‘localhost‘).first()#查询数据
    # print("++>",obj)
    # obj.hostname = "test server"
    # delete(删除数据)
    # obj = session.query(Host).filter(Host.hostname==‘test server‘).first()
    # session.delete(obj)
    # session.commit()

 1 # ########## 增 ##########
 2 # u = User(id=2, name=‘sb‘)
 3 # session.add(u)
 4 # session.add_all([
 5 #     User(id=3, name=‘sb‘),
 6 #     User(id=4, name=‘sb‘)
 7 # ])
 8 # session.commit()
 9
10 # ########## 删除 ##########
11 # session.query(User).filter(User.id > 2).delete()
12 # session.commit()
13
14 # ########## 修改 ##########
15 # session.query(User).filter(User.id > 2).update({‘cluster_id‘ : 0})
16 # session.commit()
17 # ########## 查 ##########
18 # ret = session.query(User).filter_by(name=‘sb‘).first()
19
20 # ret = session.query(User).filter_by(name=‘sb‘).all()
21 # print ret
22
23 # ret = session.query(User).filter(User.name.in_([‘sb‘,‘bb‘])).all()
24 # print ret
25
26 # ret = session.query(User.name.label(‘name_label‘)).all()
27 # print ret,type(ret)
28
29 # ret = session.query(User).order_by(User.id).all()
30 # print ret
31
32 # ret = session.query(User).order_by(User.id)[1:3]
33 # print ret
34 # session.commit()

增删改查

时间: 2024-10-17 01:53:31

python学习之day11的相关文章

Python学习路程day11

SqlAlchemy ORM SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果 Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如: 1 MySQL-Python 2 mysql+mysqldb://<user>:<password>@<host>[:<por

Python学习笔记day11

SqlAlchemy ORM SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果 Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如: 1 2 3 4 5 6 7 8 9 10 11 12 13 MySQL-Python     mysql+mysqldb://<user>:<pass

python学习笔记-Day11 (线程、进程、queue队列、生产消费模型、携程)

线程使用 ###方式一 import threading def f1(arg): print(arg) t = threading.Thread(target=f1, args=(123,)) t.start() # start会调用run方法执行 # t是threading.Thread类的一个对象 # t.start()就会以线程的方式执行函数,可以使用pycharm ctrl选择start方法 # 找到Thread类的start方法,在start方法的注释中就已经写明,会去调用run()

python学习:程序控制结构·作业20141219

Python学习:程序控制结构 20141219 编程环境: windows 7 x64 python 2.7.6 题目: 1 编写程序,完成下列题目(1分) 题目内容: 如果列出10以内自然数中3或5的倍数,则包括3,5,6,9.那么这些数字的和为23.要求计算得出任意正整数n以内中3或5的倍数的自然数之和. 输入格式: 一个正整数n. 输出格式: n以内中3或5的倍数的自然数之和. 输入样例: 10 输出样例: 23 时间限制:500ms内存限制:32000kb n = int(raw_in

python学习第二天

python学习的第二天就是个灾难啊,这天被打击了,自己写的作业被否认了,不说了,写博客还是个好习惯的,要坚持下去,就不知道能坚持到什么时候.呵呵!!! 这天教的知识和第一天的知识相差不大,区别在于比第一天讲的更细了(我们是两个老师教的,风格是不一样的),这次也写那些比较细的知识点. python的简介 (1)你的程序一定要有个主文件. (2)对于python,一切事物都是对象,对象基于类创建.#似懂非懂,不过有那么点似懂. 知识点 #__divmod__ 会把两个数字相除的商和余数以元组的方式

[Python 学习] 二、在Linux平台上使用Python

这一节,主要介绍在Linux平台上如何使用Python 1. Python安装. 现在大部分的发行版本都是自带Python的,所以可以不用安装.如果要安装的话,可以使用对应的系统安装指令. Fedora系统:先以root登入,运行 yum install python Ubuntu系统:在root组的用户, 运行 sudo apt-get install python 2. 使用的Python的脚本 Linux是一个以文件为单位的系统,那么我们使用的Python是哪一个文件呢? 这个可以通过指令

python学习之最简单的用户注册及登录验证小程序

文章都是从我的个人博客上粘贴过来的哦,更多内容请点击 http://www.iwangzheng.com 正如很多同学所知道的,楼主开始学习python了,前进的道路曲曲折折,有荆棘也有陷阱,从最简单的小程序写起,每天练习,将python进行到底. 有一点比较别扭的就是python的换行之后空四个空格,ruby都是两个,并且python在方法和循环语句的第一句都要加冒号 mysql> show create table user; mysql> alter table user add sal

python学习--创建模块

昨天做了python客户端和服务器端通信,并把接收到的信息写到数据库,因为对数据库进行操作是个经常调用的行为,所以我想把调用数据库的操作写成一个module来给其它python程序调用,所以将昨天的服务器端程序拆分为两个文件: 1.主程序python.py #!/usr/bin/env python import socket import json import connmysql s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) h

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho