flask 连接mysql相关操作

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

1   安装flask连接数据库模块flask-sqlalchemy

1
2
3
4
5
6
7
8
[root@django flask] # pip install flask-sqlalchemy
Collecting flask - sqlalchemy
   Downloading Flask - SQLAlchemy - 2.0 .tar.gz ( 93kB )
     100 %  | ################################| 94kB 111kB/s
Requirement already satisfied (use  - - upgrade to upgrade): Flask> = 0.10  in  / usr / lib / python2. 7 / site - packages ( from flask - sqlalchemy)
Collecting SQLAlchemy ( from  flask - sqlalchemy)
   Downloading SQLAlchemy - 0.9 . 9.tar .gz ( 4.2MB )
     100 %  | ################################| 4.2MB 16kB/s

2  安装mysql-python

[root@django flask]# pip install mysql-python

3  生成mysql数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@django flask] # cat db.py
from  flask  import  Flask
import  MySQLdb
from  flask.ext.sqlalchemy  import  SQLAlchemy
  
app  =  Flask(__name__)
app.config[ 'SQLALCHEMY_DATABASE_URI' = 'mysql://root:123456@localhost/flask'
db  =  SQLAlchemy(app)
 
class  User(db.Model):
     id  =  db.Column(db.Integer, primary_key = True )
     username  =  db.Column(db.String( 80 ), unique = True )
     email  =  db.Column(db.String( 320 ), unique = True )
     phone  =  db.Column(db.String( 32 ), nullable = False )
  
     def  __init__( self , username, email, phone):
         self .username  =  username
         self .email  =  email
         self .phone =  phone
if  __name__  = =  '__main__' :
         db.create_all()

primary_key  主键      db.create_all()表示执行mysql语句

python db.py执行完后查看数据库有没有这个表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> use flask;
Reading table information  for  completion of table  and  column names
You can turn off this feature to get a quicker startup with  - A
 
Database changed
mysql> desc user;
+ - - - - - - - - - - + - - - - - - - - - - - - - - + - - - - - - + - - - - - + - - - - - - - - - + - - - - - - - - - - - - - - - - +
| Field    |  Type          | Null | Key | Default | Extra          |
+ - - - - - - - - - - + - - - - - - - - - - - - - - + - - - - - - + - - - - - + - - - - - - - - - + - - - - - - - - - - - - - - - - +
id        int ( 11 )      | NO   | PRI | NULL    | auto_increment |
| username | varchar( 80 )  | YES  | UNI | NULL    |                |
| email    | varchar( 320 ) | YES  | UNI | NULL    |                |
| phone    | varchar( 32 )  | NO   |     | NULL    |                |
+ - - - - - - - - - - + - - - - - - - - - - - - - - + - - - - - - + - - - - - + - - - - - - - - - + - - - - - - - - - - - - - - - - +
4  rows  in  set  ( 0.00  sec)

 

以上就是显示说明是成功的mysql连接简单操作很轻松的

 

4  插入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@django flask] # cat  insert.db
from  flask  import  Flask
import  MySQLdb
from  flask.ext.sqlalchemy  import  SQLAlchemy
  
app  =  Flask(__name__)
app.config[ 'SQLALCHEMY_DATABASE_URI' = 'mysql://root:123456@localhost/flask'
db  =  SQLAlchemy(app)
 
class  User(db.Model):
     id  =  db.Column(db.Integer, primary_key = True )
     username  =  db.Column(db.String( 80 ), unique = True )
     email  =  db.Column(db.String( 320 ), unique = True )
     phone  =  db.Column(db.String( 32 ), nullable = False )
  
     def  __init__( self , username, email, phone):
         self .username  =  username
         self .email  =  email
         self .phone =  phone
inset = User(username = 'itmin' , email = 'itmin@qq.com' , phone = '13812345678' )
db.session.add(inset)
db.session.commit()

 

查看下数据库

1
2
3
4
5
6
7
8
9
mysql> select  *  from  User;
ERROR  1146  ( 42S02 ): Table  'flask.User'  doesn't exist
mysql> select  *  from  user;
+ - - - - + - - - - - - - - - - + - - - - - - - - - - - - - - + - - - - - - - - - - - - - +
id  | username | email        | phone       |
+ - - - - + - - - - - - - - - - + - - - - - - - - - - - - - - + - - - - - - - - - - - - - +
|   1  | itmin    | itmin@qq.com |  13812345678  |
+ - - - - + - - - - - - - - - - + - - - - - - - - - - - - - - + - - - - - - - - - - - - - +
1  row  in  set  ( 0.00  sec)

 

5  查询数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[root@django flask] # cat select.db
from  flask  import  Flask
import  MySQLdb
from  flask.ext.sqlalchemy  import  SQLAlchemy
  
<span style = "color: rgb(255, 0, 0);" > from  sqlalchemy  import and_,not_,or_< / span>
app  =  Flask(__name__)
app.config[ 'SQLALCHEMY_DATABASE_URI' = 'mysql://root:123456@localhost/flask'
db  =  SQLAlchemy(app)
 
class  User(db.Model):
     id  =  db.Column(db.Integer, primary_key = True )
     username  =  db.Column(db.String( 80 ), unique = True )
     email  =  db.Column(db.String( 320 ), unique = True )
     phone  =  db.Column(db.String( 32 ), nullable = False )
  
     def  __init__( self , username, email, phone):
         self .username  =  username
         self .email  =  email
         self .phone =  phone
     def  __repr__( self ):
         return  "<User '{:s}'>" . format ( self .username)
         # return 'User %r' % self.username
select_ = User.query.filter_by(username = 'itmin' ).first()
print (select_. id #精确查询并查找出ID
 
print User.query. filter (User.email.endswith( '@qq.com' )). all () #模糊查询
 
print User.query. filter (User.phone.endswith( '13812345678' )). all ()
 
print  User.query. filter (User.username ! =  'yoyo' ).first() #反条件查询非
 
print User.query. filter (not_(User.username = = 'yoyo' )).first()
1
#反条件查询非
1
2
3
4
5
6
7
8
9
print  User.query. filter (or_(User.username ! =  'yoyo' , User.email.endswith( '@example.com' ))).first()    #或查询
print  User.query. filter (and_(User.username ! =  'yoyo' , User.email.endswith( '@example.com' ))).first()   #与查询
print  User.query.limit( 10 ). all ()  #查询返回的数据的数目
 
data_all = User.query. all ()
print  (data_all) #查询全部
 
for  in  range ( len (data_all)):
  print  data_all[i].username + " " + data_all[i].email + " " + data_all[i].phone

#循环拿出全部数据

 

结果:

1
2
3
4
5
6
7
8
9
10
11
[root@django flask] # python select.db
1
[<User  'itmin' >, <User  'yoyo' >]
[<User  'itmin' >]
<User  'itmin' >
<User  'itmin' >
<User  'itmin' >
[<User  'itmin' >]
[<User  'itmin' >, <User  'yoyo' >]
itmin itmin@qq.com  13812345678
yoyo yy@qq.com  13812345679

 

 

6  更新数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@django flask] # cat update.py
from  flask  import  Flask
import  MySQLdb
from  flask.ext.sqlalchemy  import  SQLAlchemy
  
app  =  Flask(__name__)
app.config[ 'SQLALCHEMY_DATABASE_URI' = 'mysql://root:123456@localhost/flask'
db  =  SQLAlchemy(app)
 
class  User(db.Model):
     id  =  db.Column(db.Integer, primary_key = True )
     username  =  db.Column(db.String( 80 ), unique = True )
     email  =  db.Column(db.String( 320 ), unique = True )
     phone  =  db.Column(db.String( 32 ), nullable = False )
  
     def  __init__( self , username, email, phone):
         self .username  =  username
         self .email  =  email
         self .phone =  phone
news = User.query. all ()
print  news
news[ 1 ].username = 'test'
db.session.commit()

7   删除数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@django flask] # cat delete.py
from  flask  import  Flask
import  MySQLdb
from  flask.ext.sqlalchemy  import  SQLAlchemy
  
app  =  Flask(__name__)
app.config[ 'SQLALCHEMY_DATABASE_URI' = 'mysql://root:123456@localhost/flask'
db  =  SQLAlchemy(app)
 
class  User(db.Model):
     id  =  db.Column(db.Integer, primary_key = True )
     username  =  db.Column(db.String( 80 ), unique = True )
     email  =  db.Column(db.String( 320 ), unique = True )
     phone  =  db.Column(db.String( 32 ), nullable = False )
  
     def  __init__( self , username, email, phone):
         self .username  =  username
         self .email  =  email
         self .phone =  phone
 
name = User.query.filter_by(username  =  'bb' ).first()
db.session.delete(name)
db.session.commit()
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
18天前
|
关系型数据库 MySQL 网络安全
DBeaver连接MySQL提示Access denied for user ‘‘@‘ip‘ (using password: YES)
“Access denied for user ''@'ip' (using password: YES)”错误通常与MySQL用户权限配置或网络设置有关。通过检查并正确配置用户名和密码、用户权限、MySQL配置文件及防火墙设置,可以有效解决此问题。希望本文能帮助您成功连接MySQL数据库。
32 4
|
1月前
|
安全 关系型数据库 MySQL
【赵渝强老师】MySQL的连接方式
本文介绍了MySQL数据库服务器启动后的三种连接方式:本地连接、远程连接和安全连接。详细步骤包括使用root用户登录、修改密码、创建新用户、授权及配置SSL等。并附有视频讲解,帮助读者更好地理解和操作。
|
2月前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
118 6
|
2月前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
2月前
|
Java 关系型数据库 MySQL
【编程基础知识】Eclipse连接MySQL 8.0时的JDK版本和驱动问题全解析
本文详细解析了在使用Eclipse连接MySQL 8.0时常见的JDK版本不兼容、驱动类错误和时区设置问题,并提供了清晰的解决方案。通过正确配置JDK版本、选择合适的驱动类和设置时区,确保Java应用能够顺利连接MySQL 8.0。
239 1
|
2月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
175 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
2月前
|
SQL JavaScript 关系型数据库
Node.js 连接 MySQL
10月更文挑战第9天
30 0
|
3月前
|
SQL JavaScript 关系型数据库
Node服务连接Mysql数据库
本文介绍了如何在Node服务中连接MySQL数据库,并实现心跳包连接机制。
47 0
Node服务连接Mysql数据库
|
2月前
|
关系型数据库 MySQL Linux
Navicat 连接 Windows、Linux系统下的MySQL 各种错误,修改密码。
使用Navicat连接Windows和Linux系统下的MySQL时可能遇到的四种错误及其解决方法,包括错误代码2003、1045和2013,以及如何修改MySQL密码。
262 0
|
3月前
|
关系型数据库 MySQL 数据库
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
220 0