python 小练习

练习.将文件上传至数据库,并可以查询内容。以下是文件部分内容。

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.壳,英,炮弹,外壳




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值