python使用数据库

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

使用python-DB-API,只需要搞清楚Connection、Cursor对象,打开后一定得关闭。


Cursor对象执行insert、update、delete,结果由rowcount返回影响的行数,拿到执行结果。


Cursor对象执行select,通过featchall()拿到list的结果集,每个元素都是一个tuple,对应一行记录


SQL带有参数,需要把参数按照位置传递给execute()方法。


安装mysql官方提供的python驱动

pip install mysql-connection-python --allow-external mysql-connection-python


操作mysql的步骤:

import mysql.connector

conn=mysql.connector.connect(user='root', password='password', database='test')

cursor=conn.cursor()

cursor.execute('create table user(id varchar(20) primary key, name varchar(20))')

cursor.execute('insert into user(id, name) values(%s, %s)', ['1', 'Michael'])

cursor.rowcount


conn.commit()

cursor.close()


cursor = conn.cursor()

cursor.execute('select * from user where id = %s', ['1'])

values = cursor.fetchall()

values


cursor.close()

conn.close()


ORM技术 -- Object-Relational Mapping,把关系数据库的表接受映射到对象上。

ORM框架 -- SQLAlchemy 

SQLAlchemy的应用, 初始化DBSession

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from  sqlalchemy  import  Column, String, create_engine
from  sqlalchemy.orm  import  sessionmaker
from  sqlalchemy.ext.declarative  import  declarative_base
 
Base  =  declarative_base()
 
class  User(Base):
     __tablename__  =  'user'
     
     id  =  Column(String( 20 ), primary_key  =  True )
     name  =  Column(String( 20 ))
     
     
engine  =  create_engine( 'mysql+mysqlconnector://root:password@localhost:3306/test' )
 
DBSession  =  sessionmaker(bind = engine)

一个表对应一个class。使用ORM添加记录,可以看成为添加一个User对象。

1
2
3
4
5
6
session  =  DBSession()
new_user = User( id = '5' , name = 'bob' )
 
session.add(new_user)
session.commit()
session.close()

添加数据的关键是获取session,然后把对象添加到session,最后提交并关闭。DBSession对象可视为当前数据库连接。

使用ORM从数据库中查询数据:结果是一个user对象,而不是tuple。

1
2
3
4
5
6
7
session  =  DBSession()
 
user  =  session.query(User). filter (User. id = = '5' ).one()
 
print ( 'type:' type (user)
print ( 'name:' , user.name)
session.close()

多个表通过外键实现一对多,多对多的关联。ORM框架也可以实现一对多,多对多功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class  User(Base):
     __tablename__  =  'user'
     
     id  =  Column(String( 20 ), primary_key  =  True )
     name  =  Column(String( 20 ))
     
     books  =  relationship( 'Book' )
     
     
class  Book(Base):
     __tablename__  =  'book'
     
     id  =  Column(String( 20 ), primary_key = True )
     name  =  Column(String( 20 ))
     
     user_id  =  Column(String( 20 ), ForeignKey( 'user,id' ))

查询一个User对象时,该对象的books属性将返回一个包含若干个Book对象的list。


ORM的作用就是把数据库表的一行记录与一个对象做相互转换, 使用ORM的前提是了解关系数据库的原理。













本文转自ting2junshui51CTO博客,原文链接: http://blog.51cto.com/ting2junshui/1753482,如需转载请自行联系原作者



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
存储 NoSQL MongoDB
|
28天前
|
前端开发 数据库 Python
使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
36 7
|
2天前
|
SQL 关系型数据库 MySQL
Python爬虫之关系型数据库存储#5
python MySQL 增删改查操作
9 1
|
2天前
|
SQL 关系型数据库 MySQL
Python中的数据库操作:SQLite与MySQL的连接
Python中的数据库操作:SQLite与MySQL的连接
|
17天前
|
缓存 监控 关系型数据库
构建高效的数据库应用:Python 实践
在当今数据驱动的世界中,构建高效的数据库应用程序对于企业和个人来说至关重要。Python 作为一种强大的编程语言,提供了丰富的数据库工具和库,使得开发人员能够轻松地构建高效、可靠的数据库应用程序。在本文中,我们将探讨一些关键的技术和最佳实践,以帮助你构建高效的数据库应用程序。
|
17天前
|
数据采集 数据可视化 大数据
处理大数据:Python 与数据库的结合
在处理大数据的领域中,Python 凭借其强大的数据处理和分析能力,成为了与数据库结合的理想选择。Python 提供了丰富的数据库接口和工具,可以与各种主流的关系型数据库和 NoSQL 数据库进行高效交互。本文将探讨 Python 在处理大数据方面与数据库结合的一些关键技术和应用。
|
17天前
|
存储 数据库连接 数据库
数据存储与检索:Python 与数据库的交互
在当今的数据驱动世界中,有效地存储和检索数据是至关重要的。Python 作为一种强大的编程语言,提供了多种方式与数据库进行交互,使得处理和管理数据变得更加便捷。在本文中,我们将探讨 Python 与数据库交互的基本概念和技术,包括使用 Python 的数据库驱动程序、连接数据库、执行查询和操作数据等。
|
17天前
|
缓存 NoSQL 数据库
用 Python 进行数据库查询优化
在数据量较大的情况下,数据库查询的性能可能会成为系统性能的瓶颈。为了提高查询速度和效率,需要对查询进行优化。在 Python 中,我们可以采取一些策略来优化数据库查询。
|
17天前
|
存储 SQL 数据库连接
连接并操作数据库:Python 数据库案例
数据库是一种用于存储和管理数据的工具,它以一种有组织的方式将数据存储在文件或内存中,以便于检索和处理。数据库系统通常使用 SQL(Structured Query Language)语言来进行数据的操作,包括数据的插入、查询、更新和删除等。
|
17天前
|
关系型数据库 数据挖掘 MySQL
Python 数据库处理基础
数据库处理是许多应用程序的核心部分,包括 Web 应用、数据分析和科学研究等。Python 提供了多种方式来处理数据库,使开发者能够轻松地与各种数据库系统进行交互。

热门文章

最新文章