Python SQLAlchemy:玩家对象未保存在DB中?

Python SQLAlchemy:玩家对象未保存在DB中?,python,sql,sqlalchemy,Python,Sql,Sqlalchemy,我正在尝试使用SQLAlchemy开发一个基本的应用程序,但遇到了一些麻烦。似乎我试图保存到数据库的尝试不起作用。以下是我目前掌握的情况: 球员级别: class Player: def __init__(self, rating, college, ranking = None, firstName = None, lastName = None): self.rating = rating self.college = college

我正在尝试使用SQLAlchemy开发一个基本的应用程序,但遇到了一些麻烦。似乎我试图保存到数据库的尝试不起作用。以下是我目前掌握的情况:

球员级别:

class Player:
    def __init__(self,  rating, college, ranking = None, firstName = None, lastName = None):
        self.rating = rating
        self.college = college
        self.ranking = ranking
        self.firstName = firstName
        self.lastName = lastName
某些特定于数据库的方法(保存在名为databaseFunctions.py的模块中):

最后,这里是我的主要方法:

def main():
    #create engine (for use by base and session)
    engine = databaseFunctions.createEngine()
    #create session
    session = databaseFunctions.createSession(engine)
    #get all players from CSA website
    allPlayers = getSortedGender(constants.mainURL, constants.menTeams)
    databaseFunctions.updateEntireDB(allPlayers, session)
    databaseFunctions.findPlayerWithRanking(100, session)
因此,理想情况下,这将建立我的数据库,用一堆玩家(~650)填充数据库,并打印出排名第100位玩家的信息。但是在我的
findPlayerWithRanking()
函数中,我查询排名第100位的玩家并返回
None

我的代码生成的SQL看起来也有点粗略:实际上插入正确:

2015-06-17 00:28:54,211 INFO sqlalchemy.engine.base.Engine ('Elizabeth H.', 'McDermott')
2015-06-17 00:28:54,212 INFO sqlalchemy.engine.base.Engine INSERT INTO players ("firstName", "lastName", college, ranking, rating) VALUES (?, ?, ?, ?, ?)
2015-06-17 00:28:54,212 INFO sqlalchemy.engine.base.Engine (659, 'Elizabeth H.', 'Denison', 'McDermott', 2.11)
2015-06-17 00:28:54,213 INFO sqlalchemy.engine.base.Engine COMMIT
2015-06-17 00:28:54,214 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2015-06-17 00:28:54,215 INFO sqlalchemy.engine.base.Engine SELECT players.id AS players_id, players."firstName" AS "players_firstName", players."lastName" AS "players_lastName", players.college AS players_college, players.ranking AS players_ranking, players.rating AS players_rating
FROM players
WHERE players.ranking = ?
 LIMIT ? OFFSET ?
第二行让我觉得它实际上并没有插入值(它只是有“?”占位符。第三行显示了正确的值,但它们似乎不符合顺序。也就是说,在上面,第二行指定了“firstName”由于第一个字段和第三行的值以659开头,她的排名。也许这是问题的一部分

任何帮助都将不胜感激, 外行

编辑以包含adEntryToDB功能:

def addEntryToDB(playerObject, session):
    #create new player object
    newPlayer = Player(playerObject.rating, playerObject.college, playerObject.ranking, playerObject.firstName, playerObject.lastName)
    #add record to session object
    session.add(newPlayer)
    #commit record to database
    session.commit()
编辑以添加打印的示例输出
playerObject

 ranking is 658 firstName is Anisha lastName is Nawalrai Melwani rating is 2.28 college is Boston University
 ranking is 659 firstName is Elizabeth H. lastName is McDermott rating is 2.12 college is Denison
编辑以包含新SQL:

2015-06-17 14:03:46,298 INFO sqlalchemy.engine.base.Engine ('Elizabeth H.', 'McDermott', 1, 0)
2015-06-17 14:03:46,300 INFO sqlalchemy.engine.base.Engine INSERT INTO players ("firstName", "lastName", college, ranking, rating) VALUES (?, ?, ?, ?, ?)
2015-06-17 14:03:46,300 INFO sqlalchemy.engine.base.Engine ('Elizabeth H.', 'McDermott', 'Denison', 659, 2.12)
2015-06-17 14:03:46,300 INFO sqlalchemy.engine.base.Engine COMMIT
2015-06-17 14:03:46,302 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2015-06-17 14:03:46,303 INFO sqlalchemy.engine.base.Engine SELECT players.id AS players_id, players."firstName" AS "players_firstName", players."lastName" AS "players_lastName", players.college AS players_college, players.ranking AS players_ranking, players.rating AS players_rating
FROM players
WHERE players.ranking = ?
 LIMIT ? OFFSET ?

你能把
addEntryToDB
函数也显示出来吗?@plaes完成了,如果你还需要什么,请告诉我!我想你关于
INSERT
语句的参数顺序错误的猜测可能是问题所在。它看起来像
Player.\uuu init\uu
可以,但是你确定
playerObject
的值正确吗是否已签名到字段?您只需
print(playerObject)
检查即可。@van yeah我刚刚迭代了playerObject,它们似乎设置正确。示例输出添加到原始帖子中。可能是因为
Player
中的
L
应该小写?
2015-06-17 14:03:46,298 INFO sqlalchemy.engine.base.Engine ('Elizabeth H.', 'McDermott', 1, 0)
2015-06-17 14:03:46,300 INFO sqlalchemy.engine.base.Engine INSERT INTO players ("firstName", "lastName", college, ranking, rating) VALUES (?, ?, ?, ?, ?)
2015-06-17 14:03:46,300 INFO sqlalchemy.engine.base.Engine ('Elizabeth H.', 'McDermott', 'Denison', 659, 2.12)
2015-06-17 14:03:46,300 INFO sqlalchemy.engine.base.Engine COMMIT
2015-06-17 14:03:46,302 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2015-06-17 14:03:46,303 INFO sqlalchemy.engine.base.Engine SELECT players.id AS players_id, players."firstName" AS "players_firstName", players."lastName" AS "players_lastName", players.college AS players_college, players.ranking AS players_ranking, players.rating AS players_rating
FROM players
WHERE players.ranking = ?
 LIMIT ? OFFSET ?