python SQLAlchemy复习
下面的代码主要使用SQLAlchemy的ORM思想实现查询单词的功能:
实现输入一个单词,查询出与输入单词接近的单词以及单词的意思。
主要有以下三步:
1、创建数据表
2、插入数据
3、查询数据
1、创建数据表
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2018/5/30 14:23
# @Author: yangjian
# @File : createtable.py import codecs from sqlalchemy import Column, MetaData, Table
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker # 参数分别是:指定哪种数据库类型、数据库用户名、密码、数据库所在主机IP、数据库名
engine = create_engine('mysql+pymysql://yangjian:123456@100.106.106.220/sqlalchemy') # MetaData类主要用于保存表结构,连接字符串等数据,是一个多表共享的对象
# 绑定一个数据源的metadata
metadata = MetaData(engine) # 定义表名、表结构
dictionary = Table('dictionary', metadata,
Column('id', Integer, primary_key=True),
Column('key', String(50)),
Column('value', String(50))
)
# 创建表
metadata.create_all(engine)
2、插入数据
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2018/5/30 14:25
# @Author: yangjian
# @File : insertdatas.py import codecs from sqlalchemy import Integer, Column, String, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker engine = create_engine('mysql+pymysql://yangjian:123456@100.106.106.220/sqlalchemy?charset=utf8') # Declarative,一是描述我们要处理的数据库表的信息,二是将我们的Python类映射到这些表上。
# 基类declarative_base()含有ORM映射中相关的类和表的信息。
# Dictionary是从基类派生出来的类,在这里可以定义将要映射到数据库表上的属性(表名、列名及列类型等)
Base = declarative_base()
class Dictionary(Base):
__tablename__ = 'dictionary'
id = Column(Integer, primary_key=True)
key = Column(String(50))
value = Column(String(50)) # 通过sessionmaker方法创建一个Session工厂,然后在调用工厂的方法来实例化一个Session对象。
DBSession = sessionmaker(bind=engine)
session = DBSession() # 定义一个类对源数据进行处理,并存入到表中
class HandleData(object):
def __init__(self, dataFile):
self.dataFile = dataFile
def make_data_to_str(self):
with codecs.open(self.dataFile, encoding='utf-8') as file:
for (num, value) in enumerate(file):
line = value.strip().split()
# 这里的Dictionary是在上面由基类派生出来的
diction =Dictionary(id=num+1, key=line[0], value=line[1])
session.add(diction)
session.commit() handleData = HandleData('dictionary.txt')
handleData.make_data_to_str()
session.close()
3、查询数据
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2018/5/30 14:28
# @Author: yangjian
# @File : selectData.py from sqlalchemy import create_engine, Integer, Column, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker engine = create_engine('mysql+pymysql://yangjian:123456@100.106.106.220/sqlalchemy?charset=utf8') Base = declarative_base()
class Dictionary(Base):
__tablename__ = 'dictionary'
id = Column(Integer, primary_key=True)
key = Column(String(50))
value = Column(String(50)) DBSession = sessionmaker(bind=engine)
session = DBSession() # 输入要查询的单词
word = input("please input your a word:")
# 查询数据库,用到了sql查询中的like
result =session.query(Dictionary).filter(Dictionary.key.like("%{0}%".format(word))).all()
for each in result:
print(each.id, each.key, each.value)
执行程序
python selectData.py please input your a word:compose
1370 compose v.由...组成,作曲
1371 composed adj.镇静的
1372 composer n.作曲家
1804 decompose v.分解,腐烂
python SQLAlchemy复习的更多相关文章
- python SQLAlchemy
这里我们记录几个python SQLAlchemy的使用例子: 如何对一个字段进行自增操作 user = session.query(User).with_lockmode('update').get ...
- Python SQLAlchemy --3
本文為 Python SQLAlchemy ORM 一系列教學文: 刪除 學會如何查詢之後,就能夠進行後續的刪除.更新等操作. 同樣地,以幾個範例做為學習的捷徑. 123456789 user_1 = ...
- Python SQLAlchemy --2
本文為 Python SQLAlchemy ORM 一系列教學文: 接下來會更深入地探討查詢的使用. 查詢的基本使用法為 session.query(Mapped Class),其後可加 .group ...
- Python SQLAlchemy --1
本文為 Python SQLAlchemy ORM 一系列教學文: SQLAlchemy 大概是目前 Python 最完整的資料庫操作的套件了,不過最令人垢病的是它的文件真的很難閱讀,如果不搭配個實例 ...
- Python SqlAlchemy使用方法
1.初始化连接 from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker engine = create ...
- python+SQLAlchemy+爬虫
python+SQLAlchemy+爬虫 前面分享了SQLAlchemy的知识,这次我共享一下学习用python开发爬虫再把爬出来的数据放到用SQLAlchemy的数据库上面的知识,当然我这个是带测试 ...
- Python并发复习1 - 多线程
一.基本概念 程序: 指令集,静态, 进程: 当程序运行时,会创建进程,是操作系统资源分配的基本单位 线程: 进程的基本执行单元,每个进程至少包含一个线程,是任务调度和执行的基本单位 > 进程和 ...
- Python.SQLAlchemy.0
1. SQLAlchemy and You http://lucumr.pocoo.org/2011/7/19/sqlachemy-and-you/ 2. Overview http://docs.s ...
- Python SQLAlchemy基本操作和常用技巧包含大量实例,非常好python
http://www.makaidong.com/%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%AE%B6/28053.shtml "Python SQLAlchemy基本操 ...
随机推荐
- 我在项目中运用 IOC(依赖注入)--实战篇
上一篇<我在项目中运用 IOC(依赖注入)--入门篇>只是简单的使用 IOC.实际项目使用 IOC 的情景复杂多了,比如说,构造函数有多个参数,有多个类继承同一个接口... Unity都有 ...
- WireShark 过滤 SSDP
在局域网中使用wireshark抓包过滤http的时候经常会出现一些干扰协议,例如SSDP,使用过滤条件"http"有可能出现N多ssdp包,如下图所示: SSDP:Simple ...
- Firbe Channel光纤信道
简介 中文名:网状信道 外文名:Fibre Channel 简 称:FC 光纤信道是一种高速网络技术标准(T11),主要应用于SAN(存储局域网).其拓扑结构分为三种,点到点.仲裁循环.交换结构 ...
- input文字垂直居中和按钮对齐问题,兼容IE8
1.盒子模型问题:请CSS重置 2.按钮不对齐:请浮动或者vertical-align:middle;然后计算宽高,使其对齐 : 3.IE8文本不居中:line-height属性 注意:IE8 ...
- 使用jvisualvm的jstatd方式远程监控Java程序
使用Java自带的jvisualvm调试Java程序,可以查看CPU.内存.类及线程等信息,还可以进行Dump,无疑是一个利器 由于客户端是Windows.服务端是Linux,并且是最小安装的Linu ...
- House of Roman 实战
前言 这是前几天国外一个 老哥 提出的一种思路 ,学习了一下感觉其中的堆布局的手法还不错,做个分享与记录. 这种利用手法的主要特点是不需要 leak libc的地址,通过 堆内存的布局 和 堆相关的漏 ...
- Pwn with File结构体(四)
前言 前面几篇文章说道,glibc 2.24 对 vtable 做了检测,导致我们不能通过伪造 vtable 来执行代码.今天逛 twitter 时看到了一篇通过绕过 对vtable 的检测 来执行代 ...
- MQTT介绍(3)java模拟MQTT的发布,订阅
MQTT目录: MQTT简单介绍 window安装MQTT服务器和client java模拟MQTT的发布,订阅 在此强调一下mqtt的使用场景: 1.不可靠.网络带宽小的网络 2.运行的设备CPU. ...
- LeetCode 题解之Plus One
1.题目描述 2.题目分析 从后向前做加法,等于10则进位,否则直接加1 ,返回 digits; 3.代码 vector<int> plusOne(vector<int>&am ...
- KT_登录_流程图
一.需求 关于系统登录功能,需求如下:1.登录需要输入用户名.密码2.如果连续密码输入错误4次,则自动锁定账号5分钟(也就是说5分钟之内不能再登录) 请根据以上需求,画一个登录操作流程图 二.绘图 版 ...