如何将python字典中的所有元素添加到数据库中?

如何将python字典中的所有元素添加到数据库中?,python,sqlalchemy,Python,Sqlalchemy,我正在尝试将字典的元素添加到数据库中。我对使用数据库完全是新手,我只是想知道我是否做对了,因为我觉得不是。如果是,我怎么做?那么我如何打印数据库的所有元素呢 from sqlalchemy import Column, String, Integer, create_engine from sqlalchemy.orm import relationship, sessionmaker from sqlalchemy.ext.declarative import declarative_base

我正在尝试将字典的元素添加到数据库中。我对使用数据库完全是新手,我只是想知道我是否做对了,因为我觉得不是。如果是,我怎么做?那么我如何打印数据库的所有元素呢

from sqlalchemy import Column, String, Integer, create_engine
from sqlalchemy.orm import relationship, sessionmaker
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Person(Base):
    __tablename__ = 'person'
    id = Column(Integer, primary_key = True)
    name = Column(String(250), nullable=False)
    job = Column(String(250), nullable=False)

engine = create_engine('sqlite:///persons.sqlite')
session = sessionmaker()
session.configure(bind=engine)
Base.metadata.create_all(engine)

dct = {'John':'doctor', 'Alice':'typist'}

for el in dct:
    np = Person(name=el, job=dct[el])
    s = session()
    s.add(np)
    s.commit() 

您不需要为每个项目创建新会话:

s = session()
for name, job in dct.iteritems():
    np = Person(name=name, job=job)
    s.add(np)
    s.commit() 

您不需要为每个项目创建新会话:

s = session()
for name, job in dct.iteritems():
    np = Person(name=name, job=job)
    s.add(np)
    s.commit() 

您的代码几乎完成了。您可以在验证后查询数据库

from sqlalchemy import Column, String, Integer, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()


class Person(Base):
    __tablename__ = 'person'
    id = Column(Integer, primary_key=True)
    name = Column(String(250), nullable=False)
    job = Column(String(250), nullable=False)

engine = create_engine('sqlite:///persons.sqlite')
Base.metadata.create_all(engine)

session = sessionmaker(bind=engine)
s = session()

dct = {'John': 'doctor', 'Alice': 'typist'}

for key, value in dct.items():
    np = Person(name=key, job=value)
    s.add(np)

s.commit()

db_result = s.query(Person).all()
for row in db_result:
    print row.id, row.name, row.job
输出:

1 John doctor  
2 Alice typist

您的代码几乎完成了。您可以在验证后查询数据库

from sqlalchemy import Column, String, Integer, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()


class Person(Base):
    __tablename__ = 'person'
    id = Column(Integer, primary_key=True)
    name = Column(String(250), nullable=False)
    job = Column(String(250), nullable=False)

engine = create_engine('sqlite:///persons.sqlite')
Base.metadata.create_all(engine)

session = sessionmaker(bind=engine)
s = session()

dct = {'John': 'doctor', 'Alice': 'typist'}

for key, value in dct.items():
    np = Person(name=key, job=value)
    s.add(np)

s.commit()

db_result = s.query(Person).all()
for row in db_result:
    print row.id, row.name, row.job
输出:

1 John doctor  
2 Alice typist

还有另一种方法可以直接将Python Dict插入数据库,而无需使用
for
循环,这可能会对您有所帮助

session.execute(Person.__table__.insert(), dict_values))
session.commit()
dict\u values
是一个Python dict,其键的名称与数据库列的名称完全相同。例如:
{'name':“job':“Programmer”}
或一个目录列表,例如:
[{'name':“John Doe”,'job':“Programmer”},{…},]


更多示例,请查看此项:

还有另一种方法可以直接将Python Dict插入数据库,而无需使用
for
循环,这可能会对您有所帮助

session.execute(Person.__table__.insert(), dict_values))
session.commit()
dict\u values
是一个Python dict,其键的名称与数据库列的名称完全相同。例如:
{'name':“job':“Programmer”}
或一个目录列表,例如:
[{'name':“John Doe”,'job':“Programmer”},{…},]


更多示例,请查看此项:

谢谢,这帮了大忙!谢谢你,这帮了大忙!