flask 连接mysql相关操作

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 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()
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
20天前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
63 13
|
22天前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
376 11
|
12天前
|
SQL 关系型数据库 MySQL
排除通过IP访问MySQL时出现的连接错误问题
以上步骤涵盖了大多数遇到远程连接 MySQL 数据库时出现故障情形下所需采取措施,在执行每个步骤后都应该重新尝试建立链接以验证是否已经解决问题,在多数情形下按照以上顺序执行将能够有效地排除并修复大多数基本链接相关故障。
98 3
|
26天前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
171 11
|
1月前
|
存储 关系型数据库 MySQL
修复.net Framework4.x连接MYSQL时遇到utf8mb3字符集不支持错误方案。
通过上述步骤大多数情况下能够解决由于UTF-encoding相关错误所带来影响,在实施过程当中要注意备份重要信息以防止意外发生造成无法挽回损失,并且逐一排查确认具体原因以采取针对性措施解除障碍。
148 12
|
6月前
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
8月前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
7月前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
320 25
|
7月前
|
关系型数据库 MySQL 数据库连接
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
|
9月前
|
SQL 关系型数据库 MySQL
【MySQL基础篇】多表查询(隐式/显式内连接、左/右外连接、自连接查询、联合查询、标量/列/行/表子查询)
本文详细介绍了MySQL中的多表查询,包括多表关系、隐式/显式内连接、左/右外连接、自连接查询、联合查询、标量/列/行/表子查询及其实现方式,一文全面读懂多表联查!
1065 2
【MySQL基础篇】多表查询(隐式/显式内连接、左/右外连接、自连接查询、联合查询、标量/列/行/表子查询)

热门文章

最新文章

推荐镜像

更多