sqlalchemy基本使用,sqlalchemy使用

來源:互聯網
上載者:User

sqlalchemy基本使用,sqlalchemy使用
一、ORM介紹

  orm英文全稱object relational mapping,就是對象映射關係程式,簡單來說我們類似python這種物件導向的程式來說一切皆對象,但是我們使用的資料庫卻都是關係型的,為了保證一致的使用習慣,通過orm將程式設計語言的物件模型和資料庫的關聯式模式建立映射關係,這樣我們在使用程式設計語言對資料庫進行操作的時候可以直接使用程式設計語言的物件模型進行操作就可以了,而不用直接使用sql語言。

  

orm的優點:

缺點:

二、sqlalchemy

  在Python中,最有名的ORM架構是SQLAlchemy。

  

  Dialect用於和資料API進行交流,根據設定檔的不同調用不同的資料庫API,從而實現對資料庫的操作,如:

MySQL-Python    mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>   pymysql    mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]   MySQL-Connector    mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname>   cx_Oracle    oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]   # 更多詳見:http://docs.sqlalchemy.org/en/latest/dialects/index.html

  安裝sqlalchemy

pip3 install sqlalchemy

  

 三、sqlalchemy基本使用

3.1 建立表

  sql語句建立表:

CREATE TABLE user (    id INTEGER NOT NULL AUTO_INCREMENT,    name VARCHAR(32),    password VARCHAR(64),    PRIMARY KEY (id))

  使用sqlalchemy建立

# -*- coding: UTF-8 -*-from sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, Stringfrom sqlalchemy.orm import sessionmakerengine = create_engine("mysql+pymysql://bigberg:111111@172.16.200.49:3306/study",                       encoding="utf-8", echo=True)  # 串連資料庫,echo=True =>把所有的資訊都列印出來Base = declarative_base()  # 產生orm基類class User(Base):    __tablename__ = "user"  # 表名    id = Column(Integer, primary_key=True)    name = Column(String(32))    passwd = Column(String(64))Base.metadata.create_all(engine)  # 這邊的意思是建立定義所有的表

  查看建立的表:

mysql> desc user;+--------+-------------+------+-----+---------+----------------+| Field  | Type        | Null | Key | Default | Extra          |+--------+-------------+------+-----+---------+----------------+| id     | int(11)     | NO   | PRI | NULL    | auto_increment || name   | varchar(32) | YES  |     | NULL    |                || passwd | varchar(64) | YES  |     | NULL    |                |+--------+-------------+------+-----+---------+----------------+3 rows in set (0.02 sec)

 

3.2 插入資料 

  使用sqlalchemy插入資料

# 建立與資料庫的會話session class ,注意,這裡返回給session的是個class,不是執行個體Session_class = sessionmaker(bind=engine)# 產生session執行個體Session = Session_class()# 產生你要建立的資料對象user_obj = User(name="bigberg", passwd="twgdh123")# 此時還沒建立對象呢,不信你列印一下id發現還是Noneprint(user_obj.name, user_obj.id)# 把要建立的資料對象添加到這個session裡, 一會統一建立Session.add(user_obj)# 此時也依然還沒建立print(user_obj.name, user_obj.id)# 現此才統一提交,建立資料Session.commit()  
mysql> select * from user;+----+---------+----------+| id | name    | passwd   |+----+---------+----------+|  1 | bigberg | twgdh123 |+----+---------+----------+1 row in set (0.00 sec)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.