练习.将文件上传至数据库,并可以查询内容。以下是文件部分内容。
abandon v.抛弃,放弃
abandonment n.放弃
abbreviation n.缩写
abeyance n.缓办,中止
abide v.遵守
ability n.能力
able adj.有能力的,能干的
abnormal adj.反常的,变态的
1.创建表及表结构
#导入模块
import codecs
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
#创建Create类
class CreateAble(object):
# 初始化数据库连接(echo=True打印操作信息): engine = create_engine("mysql+pymysql://sixgod:passwd@serverIP/sqlalchemy?charset=utf8") #创建表 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) # 创建对象的基类: Base = declarative_base() class Dictionary(Base): # 表的名字: __tablename__ = 'dictionary' # 表的结构:要与上边创建表的格式相同 id = Column(Integer(), primary_key=True) key = Column(String(50)) value = Column(String(50)) # 创建DBSession类型: DBsession = sessionmaker(bind=engine) session = DBsession()
运行之后查看数据库,表已创建成功。
2.向表中添加数据
将文件导入到项目中:
编写代码:
#创建InsertData类
class InsertData(object):
#初始化 def __init__(self,datafile): self.datafile = datafile
#获取数据 def make_data(self):
#打开文件 with codecs.open(self.datafile,encoding='utf-8') as file:
#获取文件行号及内容 for (num, value) in enumerate(file):
#把文件的每一行都以空格做分隔 line = value.split()
#定义需要添加的数据 diction = CreateAble.Dictionary(id=num+1,key=line[0],value=line[1])
#添加数据 CreateAble.session.add(diction)
#提交 CreateAble.session.commit()
#定义main函数
if __name__ == '__main__':
#实例化类CreateAble createAble = CreateAble()
#实例化类并传入文件 insertData = InsertData('dictionary.txt')
#执行make_data()函数 insertData.make_data()
#关闭数据库连接 createAble.session.close()
运行之后查看数据库,数据都已上传成功。
3.查询数据
运行之后输入查询内容,返回结果。#导入模块
from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker # 初始化数据库连接(echo=True打印操作信息): engine = create_engine("mysql+pymysql://sixgod:passwd@serverip/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类型: DBsession = sessionmaker(bind=engine) session = DBsession() #获取需要查询的内容 word = input("please select name:")
#以输入的内容做模糊匹配,打印字段 data = session.query(Dictionary).filter(Dictionary.key.like("%{0}%".format(word))).all() for i in data: print(i.id,i.key,i.value)
please select name:hell
3367 hell n.地狱,苦境
3368 hello int.喂,你好
6384 shell n.壳,英,炮弹,外壳