发表于: 2018-01-04 22:21:15

0 466


一.今日完成

在网上找教程,学习python连接和操作数据库实现方法,并且试着敲代码实现

1、MySQL-python

MySQL-python 又叫 MySQLdb,是 Python 连接 MySQL 最流行的一个驱动,很多框架都也是基于此库进行开发,遗憾的是它只支持 Python2.x.使用前必须下载安装响应模块.

#!/usr/bin/python

import MySQLdb

db = MySQLdb.connect(

     host="localhost",    # 主机名

     user="root",         # 用户名

     passwd="****",  # 密码

     db="fortask")        # 数据库名称

# 查询前,必须先获取游标

cur = db.cursor()

# 执行的都是原生SQL语句

cur.execute("SELECT * FROM YOUR_TABLE_NAME")

for row in cur.fetchall():

    print(row[0])

db.close()

2、mysqlclient

由于 MySQL-python 年久失修,后来出现了它的 Fork 版本 mysqlclient,完全兼容 MySQLdb,同时支持 Python3.x,是 Django ORM的依赖工具,如果想使用原生 SQL 来操作数据库,那么推荐此驱动。

3、PyMySQL

PyMySQL 是纯 Python 实现的驱动,速度上比不上 MySQLdb,最大的特点可能就是它的安装方式没那么繁琐,同时也兼容 MySQL-python

import pymysql

conn = pymysql.connect(host='localhost', user='root', passwd="***", db='fortask')

cur = conn.cursor()

cur.execute("SELECT count(id) FROM student;")

for r in cur:

    print(r)

cur.close()

conn.close()

4、peewee

写原生 SQL 的过程非常繁琐,代码重复,没有面向对象思维,继而诞生了很多封装 wrapper 包和 ORM 框架, peewee是 Python 中是最流行的 ORM 框架。

import peewee

from peewee import *

db = MySQLDatabase('fortask', user='root', passwd='****')

class Book(peewee.Model):

    author = peewee.CharField()

    title = peewee.TextField()

    class Meta:

        database = db

Book.create_table()

book = Book(author="me", title='Peewee is cool')

book.save()

for book in Book.filter(author="me"):

    print(book.title)

5、SQLAlchemy

如果想找一种既支持原生 SQL,又支持 ORM 的工具,那么 SQLAlchemy 是最好的选择,它非常接近 Java 中的 Hibernate 框架。

from sqlalchemy import create_engine

from sqlalchemy.orm import sessionmaker

from sqlalchemy_declarative import Address, Base, Person

class Address(Base):

    __tablename__ = 'address'

    id = Column(Integer, primary_key=True)

    street_name = Column(String(250))

engine = create_engine('sqlite:///sqlalchemy_example.db')

Base.metadata.bind = engine

DBSession = sessionmaker(bind=engine)

session = DBSession()

# Insert a Person in the person table

new_person = Person(name='new person')

session.add(new_person)

session.commit()


二.明日计划

1.把常见sql语句用法梳理一番,看看能否不经过数据处理直接由sql语句得到日注册人数和日累计注册人数.

2.继续看微信开发者文档,理清微信支付业务逻辑.


三.遇到问题

暂无.


四.收获

以上.



返回列表 返回列表
评论

    分享到