标签:llb code index nullable ssi root 统一 alt 注意
python操作mysql
import pymysql
‘‘‘创建数据库连接‘‘‘
conn =pymysql.connect(host=‘localhost‘,port=3306,user=‘root‘,db=‘test‘);
‘‘‘创建游标‘‘‘
cursor =conn.cursor()
‘‘‘执行单条sql‘‘‘
effect_row = cursor.execute("insert into oldboydb (name,age,gender) value(‘tianshuai‘,‘20‘,‘M‘)")
‘‘‘执行多条sql‘‘‘
data ={[‘alex‘,‘22‘,‘M‘],[‘jack‘,‘23‘,‘M‘]}
effect_row = cursor.executemany(‘insert into oldboydb (name,age,gender) values (%s,%s,%s)‘,data)
‘‘‘获取单条结果‘‘‘
print(conn.fetchone())
‘‘‘获取多条结果‘‘‘
print(conn.fetchmany(3))
‘‘‘获取所有结果‘‘‘
print(conn.fetchall())
‘‘‘提交数据‘‘‘
conn.commit()
‘‘‘关闭数据库连接‘‘‘
conn.close()
sqlachemy模块
创建表结构
from sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, Stringengine = create_engine("mysql+pymysql://root:alex3714@localhost/testdb?charset=utf8",echo=True)Base = declarative_base()
定义表结构的不常用方式
book_m2m_author = Table(‘book_m2m_author‘, Base.metadata,
Column(‘book_id‘,Integer,ForeignKey(‘books.id‘)),
Column(‘author_id‘,Integer,ForeignKey(‘authors.id‘)),
)
常用定义表结构的方式
Base = declarative_base() #生成orm基类class User(Base): __tablename__ = ‘user‘ #表名 id = Column(Integer, primary_key=True) name = Column(String(32)) password = Column(String(64)) Base.metadata.create_all(engine) #创建表结构
插入数据
Session_class=sessionmaker(bind=engine)#创建与数据库的会话session class ,注意,这里返回给session的是个class,不是实例
Session = Session_class() #生成session实例 user_obj = User(name="alex",password="alex3714") #生成你要创建的数据对象print(user_obj.name,user_obj.id) #此时还没创建对象呢,不信你打印一下id发现还是NoneSession.add(user_obj) #把要创建的数据对象添加到这个session里, 一会统一创建print(user_obj.name,user_obj.id) #此时也依然还没创建 Session.commit() #现此才统一提交,创建数据my_user = Session.query(User).filter_by(name="alex").first() query()括号内指定查询的表名,filter_by()和filter()括号内指定查询条件,.first输出第一条数据;.all输出所有数据def __repr__(self): 在定义表结构的类中加上这个函数就可以让查询结果可视化,引号内的显示内容可以自定义
return "<User(name=‘%s‘, password=‘%s‘)>" % ( self.name, self.password)objs = Session.query(User).filter(User.id>0).filter(User.id<7).all() 多条件查询my_user = Session.query(User).filter_by(name="alex").first()
my_user.name = "Alex Li"Session.commit()Session.query(User).filter(User.name.like("Ra%")).count()from sqlalchemy import func
print(Session.query(func.count(User.name),User.name).group_by(User.name).all() )from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationshipclass Address(Base): __tablename__ = ‘addresses‘ id = Column(Integer, primary_key=True) email_address = Column(String(32), nullable=False) user_id = Column(Integer, ForeignKey(‘user.id‘)) user = relationship("User", backref="addresses") #这个nb,允许你在user表里通过backref字段反向查出所有它在addresses表里的关联项 def __repr__(self): return "<Address(email_address=‘%s‘)>" % self.email_addressobj = Session.query(User).first()
for i in obj.addresses: #user表通过backref字段的addresses来查询Address表中关联的记录 print(i)addr_obj = Session.query(Address).first()print(addr_obj.user.name) #在addr_obj里直接查关联的user表from sqlalchemy import Integer, ForeignKey, String, Column
from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import relationshipBase = declarative_base()class Customer(Base): __tablename__ = ‘customer‘ id = Column(Integer, primary_key=True) name = Column(String) billing_address_id = Column(Integer, ForeignKey("address.id")) shipping_address_id = Column(Integer, ForeignKey("address.id")) billing_address = relationship("Address", foreign_keys=[billing_address_id]) shipping_address = relationship("Address", foreign_keys=[shipping_address_id])class Address(Base): __tablename__ = ‘address‘ id = Column(Integer, primary_key=True) street = Column(String) city = Column(String) state = Column(String)from sqlalchemy import Table, Column, Integer,String,DATE, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
book_m2m_author = Table(‘book_m2m_author‘, Base.metadata,
Column(‘book_id‘,Integer,ForeignKey(‘books.id‘)),
Column(‘author_id‘,Integer,ForeignKey(‘authors.id‘)),
)
class Book(Base):
__tablename__ = ‘books‘
id = Column(Integer,primary_key=True)
name = Column(String(64))
pub_date = Column(DATE)
authors = relationship(‘Author‘,secondary=book_m2m_author,backref=‘books‘)
def __repr__(self):
return self.name
class Author(Base):
__tablename__ = ‘authors‘
id = Column(Integer, primary_key=True)
name = Column(String(32))
def __repr__(self):
return self.name
多对多删除记录
删除一本书的一个作者
author_obj =s.query(Author).filter_by(name="Jack").first()
book_obj = s.query(Book).filter_by(name="跟Alex学把妹").first()book_obj.authors.remove(author_obj) #从一本书里删除一个作者s.commit()author_obj =s.query(Author).filter_by(name="Alex").first()
# print(author_obj.name , author_obj.books)s.delete(author_obj)s.commit()标签:llb code index nullable ssi root 统一 alt 注意
原文地址:http://www.cnblogs.com/lfpython/p/6659676.html