sqlalchemy数据库分层操作

在学习sqlalchemy操作中,最常见的就是如下的示例,一个文件基本上包含了数据库的增删改查。sqlalchemy的具体操作我就不再详细说明了。流程大概是:

  1. 定义表
  2. 创建数据库引擎
  3. 创建表
  4. 插入数据
  5. 查询数据
 1 #coding:utf-8
 2
 3 from sqlalchemy import Column,String,create_engine,MetaData
 4 from sqlalchemy.orm import sessionmaker
 5 from sqlalchemy.ext.declarative import declarative_base
 6 from sqlalchemy.dialects.mysql import INTEGER,CHAR
 7
 8 Base = declarative_base()
 9
10 meta = MetaData()
11
12
13 #定义User对象
14 class User(Base):
15     __tablename__ = ‘user_one‘
16
17     id = Column(String(20),primary_key=True)
18     name = Column(String(20))
19
20 #初始数据库连接
21 engine = create_engine(‘mysql+mysqldb://root:[email protected]:3306/test‘)
22
23 #创建DBsession
24 DBSession = sessionmaker(bind=engine)
25
26 #创建session会话,数据库操作的基石。
27 session = DBSession()
28
29 #在数据库中创建表user
30 User.metadata.create_all(bind=engine)
31
32 #插入数据
33 new_user = User(id=‘1‘,name=‘kiit‘)
34
35 #提交数据到session
36 session.add(new_user)
37
38 #提交到数据库
39 session.commit()
40
41 #查询User表
42 user_data = session.query(User).all()
43
44 #关闭session连接
45 session.close()
46
47 #循环将返回的数据打印
48 for i in user_data:
49     print i.id,i.name

而在实际的生产环境中根本不可能使用一个文件完成数据的这么多的操作。数据库的操作大体分为:增、删、改、查 。那么就分为这四个部分去完成数据的操作

1、定义数据库

models.py

 1 #coding:utf-8
 2
 3 from sqlalchemy import Column,CHAR,INTEGER
 4 from sqlalchemy.ext.declarative import declarative_base
 5
 6 Base = declarative_base()
 7
 8 class User(Base):
 9     __tablename__ = "user"
10
11     id = Column(CHAR(20),primary_key = True)
12     name = Column(CHAR(20))
13
14
15 class Solary(Base):
16     __tablename__ = "solary"
17
18     id = Column(INTEGER,primary_key = True)
19     name = Column(CHAR(20))
20     num =  Column(CHAR(20)) 

2、创建数据库

sql_create.py

 1 #coding:utf-8
 2
 3 from sqlalchemy import create_engine
 4 from models import *
 5
 6 engine = create_engine(‘mysql+mysqldb://root:[email protected]:3306/test‘)
 7
 8 def create_table(table_name):
 9     table_name.metadata.create_all(engine)
10     print "创建成功"

3、插入数据

sql_insert.py

 1 #coding:utf-8
 2
 3 from sqlalchemy.orm import sessionmaker
 4 from sqlalchemy.ext.declarative import declarative_base
 5 from sqlalchemy.dialects.mysql import INTEGER,CHAR
 6 from sqlalchemy import create_engine,Column
 7
 8
 9 def insert(new_data):
10
11     Base = declarative_base()
12     engine = create_engine(‘mysql+mysqldb://root:[email protected]:3306/test‘)
13     print "创建数据库引擎"
14
15     DBSession = sessionmaker(bind=engine)
16     session = DBSession()
17     print "创建session对象"
18
19     session.add(new_data)
20     print "添加数据到session"
21
22     session.commit()
23     print "提交数据到数据库"
24
25     session.close()
26     print "关闭数据库连接"
27
28 if __name__ == "__main__":
29     insert(User)

4、查询数据

sql_select.py

 1 #coding:utf-8
 2
 3 from sqlalchemy.orm import sessionmaker
 4 from sqlalchemy import create_engine
 5 from models import *
 6
 7 def select(table_name):
 8     engine = create_engine("mysql+mysqldb://root:[email protected]:3306/test")
 9     print "初始化数据库引擎"
10
11     DBSession = sessionmaker(bind=engine)
12     session = DBSession()
13     print "创建session对象"
14
15     table_data = session.query(User).all()
16     print "查询"
17
18     session.close()
19
20     return table_data
21
22
23 if __name__ == "__main__":
24     select_fun(User)

5、使用增,删,改函数

test.py

 1 #coding:utf-8
 2
 3 from models import *
 4 from sql_create import *
 5 from sql_select import *
 6
 7
 8 create_table(Solary)
 9
10 new_user = User(id="8",name="miko")
11
12 insert(new_user)
13 print "产生新的用户"
14
15
16 data = select(User)
17
18 for i in data:
19     print i.id,i.name

函数化操作的好处就是避免重复代码,并且能够解开耦合。想要查询数据库时不需要先定义table,想要删除数据库时不需要再创建引擎。以上代码经过多次测试,亲测可用。

原文地址:https://www.cnblogs.com/goldsunshine/p/9265034.html

时间: 2024-10-08 10:41:45

sqlalchemy数据库分层操作的相关文章

Java JDBC连接数库简单 分层操作

这个包的只负责实现数据库的操作 不采取其他操作 package com.zhidisoft.dao; import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement; import com.zhidisoft.entity.Dog; //用来实现数据库的操作 连接.释放数据库 通用的增删

mysql数据库----python操作mysql ------pymysql和SQLAchemy

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy 一.pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import pymysql 4 5 # 创建连接 6 conn = pymysql.connect(

python框架之Flask基础篇(二)-------- 数据库的操作

1.flask连接数据库的四步: 倒入第三方数据库扩展包:from flask_sqlalchemy import SQLAlchemy 配置config属性,连接数据库: app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:[email protected]/first_flask"app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False 创

Mysql数据库常用操作

1.备份数据库 [[email protected] ~]# mysqldump -h 192.168.0.8 -uroot  -p'123456'  user >user.sql 2.查看mysql数据库字符集设置 mysql> show variables like 'character_set_%';+--------------------------+----------------------------+| Variable_name            | Value    

使用 SQLiteOpenHelper 对数据库进行操作

SQLiteOpenHelper 是android提供的一个帮助类,这个类是抽象的,通过实现这个类,可以帮助开发者实现对SQLITE数据库的创建以及数据库版本管理,使用SQLiteOpenHelper打开数据库如果数据库存在则不创建,如果不存在则创建它(此时执行的是onCreate方法). public DatabaseHelper(Context context, String name, CursorFactory factory, int version) 第一个参数:Context类型,

Android-Sqlite数据库的操作

设置增删改查的按钮,xml界面布局设置 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="

JDBC增删改数据库的操作

JDBC入门及简单增删改数据库的操作 一.JDBC的引入 1.JDBC的概念 JDBC:Java Database Connection,表示数据库连接(任何数据库都支持JDBC的连接),是一个独立于特定数据库管理系统.通用的sql数据库存取和操作的公共接口.它是java中专门提供的一组用于操作数据库的标准,所有的数据库生产商如果要是想为java提供支持,则必须支持此标准.既然是标准的话,所以说JDBC实际上是一套访问数据库的接口. 2.常用操作类/接口 Connection接口.Stateme

bottle框架学习(八)之Mysql数据库的操作

MySQLdb 是用于Python连接Mysql数据库的接口. 安装MySQLdb [[email protected] bottle]# yum install MySQL-python –y 如果使用编译安装请到这里下载安装包https://pypi.python.org/pypi/MySQL-python并执行以下命令 [[email protected] bottle]# gunzip  MySQL-python-1.2.3.tar.gz [[email protected] bottl

mysql数据库表操作及授权

表操作:增删改查 把/etc/passwd文件的内容导入 passwd表里. mysql>load data infile"/etc/passwd" into table passwd fields terminated by ":"; 基于前面的passwd表,完成下列操作: 1:列出uid低于500且3个字母的用户 mysql> select name from passwd where uid<500 and name like "