sqlalchemy 连接数据库

王 茂南 2018年4月30日06:32:55
评论
2 1791字阅读5分58秒
摘要这一篇文章会介绍一些关于sqlalchemy来连接mysql和sqlite,并且一些测试是否连接成功的方法。

文章目录(Table of Contents)

简介

这一篇文章记录一下使用sqlalchemy进行数据库的连接,以及连接之后的一些简单测试(测试是否连接成功)。在使用之前,我们需要确保下面两个库成功安装:

  1. pip install sqlalchemy
  2. pip install mysql-connector-python

上面的 mysql-connector-python 用于使用 python 连接 mysql。 由于 MySQL 服务器以独立的进程运行,并通过网络对外服务,所以,需要支持 Python 的MySQL 驱动来连接到 MySQL 服务器。MySQL 官方提供了 mysql-connector-python 驱动。

参考资料:廖雪峰 Python 教程-使用SQLAlchemy

 

连接 sqlite

连接数据库的URL形式:

  1. sqlite:/// + 文件路径

接下来看两个例子:

  • 'sqlite:////tmp/test.db'
    • 文件路径为:/tmp/test.db,这是一个绝对路径
  • 'sqlite:///tmp/test.db'
    • 文件路径为: tmp/test.db,这是一个相对路径

 

测试连接

当连接好数据库之后,我们可以使用下面的方法来测试一下是否连接成功:

  1. from sqlalchemy import create_engine
  2. # 连接数据库
  3. engine = create_engine('sqlite:///app.db',echo=True)
  4. # 执行查询语句
  5. users = engine.execute('select * from users')
  6. # 打印查询的内容
  7. for user in users:
  8.     print(user)

接下来,我们看一下使用 session(Session 是映射类和数据库沟通的桥梁,包含事务管理功能)来进行一些操作的代码实现:

  1. from sqlalchemy import create_engine
  2. from sqlalchemy.orm import sessionmaker
  3. # 链接数据库
  4. engine = create_engine('sqlite:///app.db',echo=True)
  5. # 创建session
  6. Session = sessionmaker(bind=engine)
  7. session = Session()
  8. # 进行查找
  9. name = session.query(Contact).filter(Contact.name=='myname').first()
  10. print(name)

 

连接 mysql

上面是关于连接sqlite,下面讲一下连接mysql,其实具体的方法和上面讲得差不多,我们再来叙述一下。首先是测试数据库是否连接成功

  1. In[1]: from sqlalchemy import create_engine
  2. In[2]: engine = create_engine("mysql+mysqlconnector://root:root@localhost:3306/datbasename?charset=utf8", echo=True)
  3. In[6]: users = engine.execute('select * from users')
  4. 2018-03-21 20:56:09,419 INFO sqlalchemy.engine.base.Engine select * from users
  5. 2018-03-21 20:56:09,421 INFO sqlalchemy.engine.base.Engine ()

接下来使用 session 来进行一些操作:

  1. from sqlalchemy import create_engine
  2. from sqlalchemy.orm import sessionmaker
  3. engine = create_engine("mysql+mysqlconnector://root:root@localhost:3306/datbasename?charset=utf8", echo=True)
  4. # 创建session
  5. Session = sessionmaker(bind=engine)
  6. session = Session()
  7. names = session.query(User).all()
  8. for name in names:
  9.     print(name.user_login)

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2018年4月30日06:32:55
  • 转载请务必保留本文链接:https://mathpretty.com/9306.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: