python的mysql练习题

本文记录了使用Python的sqlalchemy库将txt文件内容写入MySQL数据库的过程。在实践中遇到字符集问题,通过调整解决了无法插入数据的难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

把txt文件中的内容写入sql

  • 今天练习了使用sqlalchemy把txt文件中的内容写入数据库。遇到了很多问题,通过百度解决了问题,主要还是不熟练,缺少练习。

代码例子

#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
 Time      :2018/05/30  22:03
 Author    : shanwu
 File Name :createtable.py
-------------------------------------------------
"""

import codecs
import pymysql

from sqlalchemy import Integer, Column, String, create_engine, MetaData,Table
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql+pymysql://root:123456@192.168.238.144:3306/testdb?charset=utf8')

Base = declarative_base()
class Dictionary(Base):
    __tablename__ = 'dictionary'
    __table_args__ = {
        'mysql_engine': 'InnoDB',
        'mysql_charset': 'utf8mb4'
    }
    id = Column(Integer, primary_key=True)
    key = Column(String(50))
    value = Column(String(50))

Base.metadata.create_all(engine)

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()
                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()
  • 需要注意的点是创建出来的表字符集不是utf8,导致出现了无法插入数据。执行下面命令就可以了。

alter table testdb.dictionary convert to character set utf8;

  • 查询表的内容的代码
#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
 Time      :2018/05/30  23:08
 Author    : shanwu
 File Name :2308.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://root:123456@192.168.238.144:3306/testdb?charset=utf8')

Base = declarative_base()
class Dictionary(Base):
    __tablename__ = 'dictionary'
    __table_args__ = {
        'mysql_engine': 'InnoDB',
        'mysql_charset': 'utf8mb4'
    }
    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:")
result =session.query(Dictionary).filter(Dictionary.key.like("%{0}%".format(word))).all()
for each in result:
    print(each.id, each.key, each.value)

#输出结果
please input your a word:yacht
7956 yacht n.游船,快艇
### GitHub 上的 MySQL 练习题与实践问题 对于希望提升 MySQL 技能的学习者而言,在 GitHub 上可以找到许多有价值的项目和仓库来提供练习机会。Codecademy is very good to get some hands-on basic experience with a new language[^1],尽管 Codecademy 提供了一定的基础实践经验,但在 GitHub 中则能找到更深入的内容。 #### 寻找适合的仓库 为了获取高质量的 MySQL 练习题目,建议访问如下链接并探索其中包含的各种挑战: - **LeetCode SQL 题库**:虽然不是直接位于 GitHub 上,但是 LeetCode 的官方 GitHub 仓库提供了大量用户提交的解决方案以及讨论区。 - **SQLZoo 官方 GitHub 仓库**:此仓库包含了由 SQLZoo 网站维护的一系列教程及其对应的查询实例。 - **awesome-mysql-github-repos**:这是一个整理了多个关于 MySQL 学习资源、工具和技术文章的列表型仓库。 #### 实践案例展示 下面是一个简单的 Python 脚本例子,用于连接到本地运行的 MySQL 数据库,并执行基本的数据检索操作: ```python import mysql.connector connection = mysql.connector.connect( host='localhost', user='root', password='password', database='testdb' ) cursor = connection.cursor() query = "SELECT * FROM users" cursor.execute(query) for row in cursor.fetchall(): print(row) cursor.close() connection.close() ``` 通过参与这些开源项目的贡献活动或是独立完成上述平台提供的任务,学习者能够有效地巩固所学知识并将理论应用于实际场景之中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值