下面的代码主要使用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复习的更多相关文章

  1. python SQLAlchemy

    这里我们记录几个python SQLAlchemy的使用例子: 如何对一个字段进行自增操作 user = session.query(User).with_lockmode('update').get ...

  2. Python SQLAlchemy --3

    本文為 Python SQLAlchemy ORM 一系列教學文: 刪除 學會如何查詢之後,就能夠進行後續的刪除.更新等操作. 同樣地,以幾個範例做為學習的捷徑. 123456789 user_1 = ...

  3. Python SQLAlchemy --2

    本文為 Python SQLAlchemy ORM 一系列教學文: 接下來會更深入地探討查詢的使用. 查詢的基本使用法為 session.query(Mapped Class),其後可加 .group ...

  4. Python SQLAlchemy --1

    本文為 Python SQLAlchemy ORM 一系列教學文: SQLAlchemy 大概是目前 Python 最完整的資料庫操作的套件了,不過最令人垢病的是它的文件真的很難閱讀,如果不搭配個實例 ...

  5. Python SqlAlchemy使用方法

    1.初始化连接 from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker engine = create ...

  6. python+SQLAlchemy+爬虫

    python+SQLAlchemy+爬虫 前面分享了SQLAlchemy的知识,这次我共享一下学习用python开发爬虫再把爬出来的数据放到用SQLAlchemy的数据库上面的知识,当然我这个是带测试 ...

  7. Python并发复习1 - 多线程

    一.基本概念 程序: 指令集,静态, 进程: 当程序运行时,会创建进程,是操作系统资源分配的基本单位 线程: 进程的基本执行单元,每个进程至少包含一个线程,是任务调度和执行的基本单位 > 进程和 ...

  8. Python.SQLAlchemy.0

    1. SQLAlchemy and You http://lucumr.pocoo.org/2011/7/19/sqlachemy-and-you/ 2. Overview http://docs.s ...

  9. Python SQLAlchemy基本操作和常用技巧包含大量实例,非常好python

    http://www.makaidong.com/%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%AE%B6/28053.shtml "Python SQLAlchemy基本操 ...

随机推荐

  1. mvc中的action验证登录(ActionFilterAttribute)

    方法一 :  1.创建一个全局action过滤器  (在appstart  的filterconfig中注册   filters.Add(new LoginAttribute());)  2.不需要登 ...

  2. WCF配置文件与文件下载之坎坷路

    题外话:本以为我会WCF了,精通WCF了,毕竟刚做过一个WCF的项目,不就是写写契约接口,然后实现接口,改下配置.最后用控制台或者服务发布一下,不就能用了.不就是简单ABC吗?不是So Easy吗?做 ...

  3. linux vi模式下基本命令和快捷键

    移动光标上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行下:j nj:向下移动n行左:h nh:向左移动n列右:l nl:向右移动n列 w:光标以单词向前移动 nw:光标向前 ...

  4. IOS中微信摇一摇声音无法播放解决办法

    在IOS中第一次调用play方法播放音频会被阻止,必须得等用户有交互动作,比如touchstart,click后才能正常调用,所以可以在摇一摇之前提醒用户点击一下开始游戏的按钮或者给用户一个弹窗,用户 ...

  5. 第三节:我的第一个Java程序

    一.编写我的第一个Java程序流程: 1.新建一个文本文档:在电脑任意位置“右击”----->选择“新建”----->选择“文本文档”: 2.修改文档名与后缀名:“右击”新建的文本文档-- ...

  6. Glide填坑指南

    一.前言:再优秀的开源库都有坑要填 手上的项目使用的图片加载框架是:Universal-Image-Loader+业务需要定制化的一些代码.Universal-Image-Loader 这个框架是一个 ...

  7. 浅谈白鹭Egret

    浅谈白鹭Egret           最近在做一个移动项目,技术选型的时候接触到了白鹭,简单了解了之后觉得挺合适的,最终就选择了这个引擎. 为什么会选择白鹭引擎呢? 我看上他主要有一下几点:   1 ...

  8. Oracle中的锁

    Oracle中的锁 锁是一种机制,多个事务同时访问一个数据库对象时,该机制可以实现对并发的控制 按照用户系统锁可以分为自动锁和显示锁. 自动锁(系统上锁):DML锁.DDL锁.systemlocks锁 ...

  9. WDCP上传SSL证书

    1.在线申请SSL证书 2.网站管理>SSL证书上传 3.将key文件直接上传,cert文件内容复制到crt文件中,再上传 4.开启https 注意:同一个域名下解析的若干域名,只能走主域名的证 ...

  10. Python的正则表达式与JSON

    Python的正则表达式需要导入re模块 菜鸟教程:http://www.runoob.com/python/python-reg-expressions.html 官方文档:https://docs ...