python数据库编程入门:python3.5连接mysql
2016-05-07 20:50
826 查看
概要:(1)通过针对python的db-api连接mysql数据库
(2)通过对象-关系管理器(ORM)管理mysql
说明:(1)环境为python3.5.32
(2)由于官方的MYSQLdb驱动只支持python 2,所以通过pymsql模块来连接mysql数据库
(3)测试库为:test_python.test_sex : 有列name,sex,age
一、pymsql连接mysql数据库
1. 安装和引入模块
2. 创建会话,进行创建和删除数据库实验
3. 查询数据
二、对象关系管理器(ORM)
(一)设计理念
1.多种python接口,需要熟悉多种数据库的sql
2.数据库表被转换为python对象,有列属性和方法
3.两种最出名的:SQLAlchemy,SQLObject
(二)安装
pip3 install SQLAlchemy
pip3 install SQLObject
(三)使用
1.创建连接串,数据库引擎, sessionmaker,进行查询
2.将表名转换为类
********************************************************************
** 欢迎转发,注明原文:blog.csdn.net/clark_xu 徐长亮的专栏
** 谢谢您的支持,欢迎关注微信公众号:clark_blog
********************************************************************
(2)通过对象-关系管理器(ORM)管理mysql
说明:(1)环境为python3.5.32
(2)由于官方的MYSQLdb驱动只支持python 2,所以通过pymsql模块来连接mysql数据库
(3)测试库为:test_python.test_sex : 有列name,sex,age
一、pymsql连接mysql数据库
1. 安装和引入模块
easy_install pymysql3 import pymysql |
conn=pymysql.connect(host='localhost',user='root') #conn.query('create database test') conn.query('drop database test') conn.commit() conn.close() |
conn = pymysql.connect(user='root', host='localhost', db='test_python') cur = conn.cursor() cur.execute("SELECT * FROM test_sex") for r in cur: print("row_number:" , (cur.rownumber) ) print("name:"+str(r[0])+" sex:"+str(r[1])+" age:"+str(r[2])) cur.close() conn.close() |
(一)设计理念
1.多种python接口,需要熟悉多种数据库的sql
2.数据库表被转换为python对象,有列属性和方法
3.两种最出名的:SQLAlchemy,SQLObject
(二)安装
pip3 install SQLAlchemy
Installing collected packages: SQLAlchemy Running setup.py install for SQLAlchemy Successfully installed SQLAlchemy-1.0.12 |
Installing collected packages: FormEncode, SQLObject Running setup.py install for FormEncode Running setup.py install for SQLObject Successfully installed FormEncode-1.3.0 SQLObject-2.1.2 |
1.创建连接串,数据库引擎, sessionmaker,进行查询
from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker # '数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名' DB_CONNECT_STRING = 'mysql+pymysql://root@localhost:3306/test_python?charset=utf8' #engine = create_engine(DB_CONNECT_STRING, echo=True) engine = create_engine(DB_CONNECT_STRING) DB_Session = sessionmaker(bind=engine) session = DB_Session() print(session.execute('show databases').fetchall()) session.execute('use test_python') print(session.execute('select * from test_sex where name = :name', {'name': 'clark01'}).first()) |
from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy import Column from sqlalchemy.types import CHAR, Integer, String from sqlalchemy.ext.declarative import declarative_base # '数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名' DB_CONNECT_STRING = 'mysql+pymysql://root@localhost:3306/test_python?charset=utf8' #engine = create_engine(DB_CONNECT_STRING, echo=True) engine = create_engine(DB_CONNECT_STRING) DB_Session = sessionmaker(bind=engine) session = DB_Session() print(session.execute('show databases').fetchall()) session.execute('use test_python') print(session.execute('select * from test_sex where name = :name', {'name': 'clark01'}).first()) Base=declarative_base() def init_db(): Base.metadata.create_all(engine) def drop_db(): Base.metadata.drop_all(engine) class test_sex(Base): __tablename__='test_sex' #sqlalchemy.exc.ArgumentError: Mapper Mapper|test_sex|test_sex #could not assemble any primary key columns for mapped table 'test_sex' name=Column(String(20),primary_key=True) sex=Column(String(20)) age=Column(String(20)) name=test_sex(name='clark01') print(name) query=session.query(test_sex) print(query) print(query.statement) for record in query: print(record.name) print(query.all()) print(query.first()) print(query.filter(test_sex.name=='clark01').first()) |
** 欢迎转发,注明原文:blog.csdn.net/clark_xu 徐长亮的专栏
** 谢谢您的支持,欢迎关注微信公众号:clark_blog
********************************************************************
相关文章推荐
- MySQL学习6:MySQL基本数据类型
- MySQL在有索引列情况下 和 无索引情况下 select *的输出结果顺序
- 优化mysql的limit offset
- MySql中的varchar类型
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
- mysql-5.7.12-winx64配置和修改root密码的方法
- hql & mysql 札记
- mysql调优
- MySQL学习5:数据库基本操作
- mysql Cannot add or update a child row: a foreign key constraint fails
- mysql修改root密码和设置权限
- 刚安装的mysql常见问题
- MySql 分区 分库 分表
- mysql主从同步不一致后的解决方法
- MYSQL常见错误
- MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
- mysql查询结果添加序列号
- MySQL的存储引擎与表的创建,键的定义,等等
- mysql explain type 和extra 列的含义
- Mysql时间函数