会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132647个问题

from sqlalchemy import create_engine, Column, Integer, String, Float, DECIMAL, Boolean, Enum, Date, DateTime, Time, Text,Table
from sqlalchemy.dialects.mysql import LONGTEXT
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship,backref
from datetime import date, datetime, time
from sqlalchemy import func, or_, ForeignKey
import enum
import random

# 准备连接数据库信息
HOSTNAME = "127.0.0.1"
PORT = "3306"
DATABASE = "first_sqlclchemy"
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)()
#需求:OMR层面外键多对多关系实现

#中间表 第3张表
news_tag=Table(
    "new_tag",
    Base.metadata,
    Column("news_id",Integer,ForeignKey("news.id"),primary_key=True),
    Column("tag_id",Integer,ForeignKey("tag.id"),primary_key=True)
)


#表1
class News(Base):
    __tablename__="news"
    id=Column(Integer,primary_key=True,autoincrement=True)
    title=Column(String(50),nullable=False)

    #添加属性
    tags=relationship("Tag",backref="newss",secondary=news_tag)
    def __repr__(self):
        return "<News(title:{0})>".format(self.title)

#表2
class Tag(Base):
    __tablename__="tag"
    id=Column(Integer,primary_key=True,autoincrement=True)
    name=Column(String(50),nullable=True)

    def __repr__(self):
        return "<Tag(name:{0})>".format(self.name)

Base.metadata.drop_all()
Base.metadata.create_all()

#添加数据
# new1=News(title="d世界第一")
# new2=News(title="d世界第二")
#
# tag1=Tag(name="要闻")
# tag2=Tag(name="娱乐")
#
# new1.tags.append(tag1)
# new1.tags.append(tag2)
#
# new2.tags.append(tag1)
# new2.tags.append(tag2)
#
# session.add(new1)
# session.add(new2)
#
# session.commit()

#查询数据
new3=session.query(News).first()
print(new3.tags)

老师 你看下我这个数据查询 为什么报错 

image.png

tags这个属性就是在News这个类里边啊

Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask数据库 541楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask高级 542楼

sec.rar

Internal Server Error

The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.


Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图基础和URL 543楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask高级 546楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图高级 549楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图基础和URL 550楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/虚拟环境 551楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask高级 552楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask数据库 554楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/虚拟环境 555楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637