Column常用参数
primary_key
:True
设置某个字段为主键。autoincrement
:True
设置这个字段为自动增长的。default
:设置某个字段的默认值。在发表时间这些字段上面经常用。nullable
:指定某个字段是否为空。默认值是True
,就是可以为空。unique
:指定某个字段的值是否唯一。默认是False
。onupdate
:在数据更新的时候会调用这个参数指定的值或者函数。在第一次插入这条数据的时候,不会用onupdate
的值,只会使用default
的值。常用于是update_time
字段(每次更新数据的时候都要更新该字段值)。name
:指定ORM
模型中某个属性映射到表中的字段名
。如果不指定,那么会使用这个属性的名字来作为字段名。如果指定了,就会使用指定的这个值作为表字段名。这个参数也可以当作位置参数,在第1个参数来指定。
title = Column(String(50),name='title',nullable=False)
title = Column('my_title',String(50),nullable=False)
使用Column
from sqlalchemy import create_engine,Column,Integer,Float
from sqlalchemy import Boolean,DECIMAL,Enum,Date,DateTime,Time,String,Text
from sqlalchemy.dialects.mysql import LONGTEXT
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from datetime import date
from datetime import datetime
from datetime import time
import enum
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'first_sqlalchemy'
USERNAME = 'root'
PASSWORD = 'root'
DB_URI ="mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8"\
.format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)
engine = create_engine(DB_URI)
Base = declarative_base(engine)
session = sessionmaker(engine)()
class News(Base):
__tablename__ = 'news'
id = Column(Integer,primary_key=True,autoincrement=True)
create_time = Column(DateTime,default=datetime.now)
read_count = Column(Integer,default=11)
title = Column(String(50),name='my_title',nullable=False)
telephone = Column(String(11),unique=True)
update_time = Column(DateTime,onupdate=datetime.now,default=datetime.now)
Base.metadata.drop_all()
Base.metadata.create_all()
news= News()
session.add(news)
session.commit()