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基本操 ...
随机推荐
- WPF Trigger for IsSelected in a DataTemplate for ListBox items
<DataTemplate DataType="{x:Type vm:HeaderSlugViewModel}"> <vw:HeaderSlugView /> ...
- IBatis项目中com.ibatis.common.xml.NodeletException的解决方案
一 现象: 今天在写IBatis项目是总是提示我有如下异常: com.ibatis.common.xml.NodeletException java.util.NoSuchElementExcepti ...
- java设计模式-----15、适配器模式
概念: Adapter模式也叫适配器模式,是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式. 举个例子:我们使用电脑,家里的电源是220V的,而我们的电脑是18V的,这时如 ...
- 设计模式--单例模式(学习Learning hard大神笔记实践)
根据大神博客园中的文章,自己亲手敲了一遍,对每个解说点都自己动手进行实践,收获颇丰,谢谢Learning hard大神,原文地址http://www.cnblogs.com/zhili/p/Desig ...
- Django基础必备三神装(HttpResponse、render,、redirect)
在使用三神装的时候,首先当然是得要导入它们: from django.shortcuts import HttpResponse, render, redirect 1.HttpResponse 它是 ...
- socketsever模块
TCP协议下 服务端可以同时接收多个客户端信息 import socketserver class MySocket(socketserver.BaseRequestHandler): def han ...
- 超级简单的jquery轮播图demo
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- js中闭包和作用域
将这方面很好的一系列文章:http://www.cnblogs.com/wangfupeng1988/p/3977987.html
- JavaWEB SSH文件上传
一.提交表单的<form> method属性必须为post 并且添加enctype="multipart/form-data" 属性 前台: <td>上传 ...
- 语义化的HTML及其目的
一.什么是语义化的HTML? 语义化的HTML就是写出的HTML代码,符合内容的结构化(内容语义化),选择合适的标签(代码语义化),能够便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地 ...