mysql安装、数据库、ORM

来源:互联网 发布:佳词网络科技集团地址 编辑:程序博客网 时间:2024/05/17 01:24

python如何操作数据库(如SQLite、MySQL)?



SQLite

SQLite的驱动内置在Python标准库中,所以我们可以直接来操作SQLite数据库。

使用Python的DB-API时,只要搞清楚Connection和Cursor对象,打开后一定记得关闭,就可以放心地使用。

使用Cursor对象执行insert,update,delete语句时,执行结果由 rowcount 返回影响的行数,就可以拿到执行结果。

使用Cursor对象执行select语句时,通过featchall()可以拿到结果集。结果集是一个list,每个元素都是一个tuple,对应一行记录。如果SQL语句带有参数,那么需要把参数按照位置传递给execute()方法,有几个“?”占位符就必须对应几个参数,例如:

cursor.execute('select * from user where id=?', '1')
cursor.execute("select * from user where id='1'")
cursor.execute('select * from user where id=/'1/'')
注意:上面的三条语句是等价的。有意思的是,当用双引号时,特殊字符是不需要转义的(而单引号需要)。

SQLite支持常见的标准SQL语句以及几种常见的数据类型。


mysql安装(所有文件已经上传百度云mysql目录)

1)安装mysql,文件:mysql-installer-community-5.6.24.0

2)安装python MySQL驱动,文件:mysql-connector-python-2.0.4-py2.7

3)安装SQLAlchemy,文件:SQLAlchemy.zip

  • 安装ez_setup.py,文件ez_setup.py;python怎么使用ez_setup.py
  • 解压到任一文件夹目录下,命令行下 切换到这一目录;
  • 执行python set_up.py install (python执行文件模式下,而非命令行交互模式下)

另外,如何不通过python接口操作MySQL,参考21分钟MySQL入门教程,看看安装部分。

有两点值得注意,

第一点,所有的操作都是针对某个具体的数据库,有两种方式实现:

         一: 在登录数据库时指定, 命令: mysql -D 所选择的数据库名 -h 主机名 -u 用户名 -p

               例如登录时选择创建的数据库samp_db: mysql -D samp_db -u root -p

               当然,第一次使用MySQL需要先创建一个数据库之后才能用这种方法!

         二: 在登录后使用 use 语句指定, 命令:   use 数据库名 ;

               use 语句可以不加分号, 执行 use samp_db 来选择刚刚创建的数据库, 选择成功后会提示: Database changed

第二点,关于环境变量path的配置没有那么复杂,直接在path系统变量添加上MySQL安装目录里bin文件夹的完整目录即可。


MySQL免安装版本

1. 解压在C盘(其他也可以)Program Files下,文件夹为mysql


2. 配置文件:把my-small.ini重命名为my.ini,并添加如下配置


3. 配置环境变量:Path系统变量添加安装目录下(C:\Program Files\mysql)的bin文件夹


4. 管理员身份运行cmd.exe:

    1)sc delete MySQL:确保MySQL服务被删除;

    2)务必切换到C:\Program Files\mysql\bin目录下(否则会出现错误),执行 mysqld --install MySQL --defaults-file="c:\Program Files\mysql\my.ini"

    3)  net start MySQL:启动MySQL服务;

    4)net stop MySQL:终止MySQL服务。



ORM:Object-Relational Mapping,把关系数据库的表结构映射到对象上

最有名的ORM框架是SQLAlchemy。

值得注意的是,SQLAlchemy操作的对象是个表,且这个表必须是已经创建的(可以未存储数据),创建表的数据库在创建引擎时与SQLAlchemy连接,这是数据库和SQLAlchemy交互的前提。这在自定义类时必须声明。


class User(Base):    # 表的名字:    __tablename__ = 'user'    ......

表user就是我们之前创建在MySQL中的(利用MySQL创建表user)。


如何利用python通过SQLAlchemy来操纵数据库?


很显然,sessionmaker是很重要的一环,它是沟通python和数据库的桥梁。当然创建sessionmaker,还要引擎(实质就是上图中大方框中的内容的集合)的帮助。根据sessionmaker和引擎创建出(沟通python和数据库的)类,利用此类创建出实例,然后所有的操作都由该实例的相应方法完成。

代码:

# -*- coding:utf-8 -*-#ORM:把数据库表的行与相应的对象建立关联,互相转换。# 导入:from sqlalchemy import Column, String, create_enginefrom sqlalchemy.orm import sessionmakerfrom sqlalchemy.ext.declarative import declarative_base# 创建对象的基类:Base = declarative_base()# 定义User对象(用于对每个表list的每个元素(tuple)进行初始化,如User('1', 'Michael')):class User(Base):    # 表的名字:    __tablename__ = 'user'    # 表的结构:    id = Column(String(20), primary_key=True)    name = Column(String(20))# 创建引擎,与指定数据库连接:engine = create_engine('mysql+mysqlconnector://root:19921005@localhost:3306/test')# 创建DBSession类DBSession = sessionmaker(bind=engine)##有了ORM,我们向数据库表中添加一行记录,可以视为添加一个User对象## 创建session实例,与数据库对话、交互:session = DBSession()# 创建新User对象:new_user = User(id='6',name='zhuma')# 添加到session:session.add(new_user)# 提交即保存到数据库:session.commit()# 关闭session:session.close()# 创建Session:session = DBSession()# 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:usr = session.query(User).filter(User.id=='6').one()# 打印类型和对象的name属性:print 'type:', type(usr)print 'name:', usr.name# 关闭Session:session.close()

0 0
原创粉丝点击