【问题标题】:Python SQL Selecting DataPython SQL 选择数据
【发布时间】:2017-11-28 22:29:16
【问题描述】:

我正在尝试测试我编写的一小段代码,用于在表的列中搜索特定字符串。代码应该搜索 LoginInfo 表的 Users 列并打印出结果。我已经尝试了此代码的两个版本,但都得到了不同的错误。

第一版:

    import sqlite3
    import sys
    Username = "('Hello1',)"
    print(Username)

    connection= sqlite3.connect("Logininfo.db")
    c = connection.cursor() 

    c.execute('''SELECT Username FROM LoginInfo WHERE Username=Hello1''') 
    for row in c :
        print(row)

版本一错误:

c.execute('''SELECT Username FROM LoginInfo WHERE Username=Hello1''') sqlite3.OperationalError:没有这样的列:Hello1

第二版:

    import sqlite3
    import sys
    Username = "('Hello1',)"
    print(Username)

    connection= sqlite3.connect("Logininfo.db")
    c = connection.cursor() 

    c.execute("SELECT Username FROM LoginInfo WHERE Username="Hello1"") 
    for row in c :
        print(row)

第二版错误:

无效语法错误弹出高亮Hello1

任何帮助都将不胜感激,因为我是这方面的新手。

【问题讨论】:

    标签: python-3.x sqlite


    【解决方案1】:

    在这两种情况下,您的语法都有问题。当您将字符串发送到cursor.execute 时,您正在向数据库发送一个完整的命令。这意味着字符串需要正确引用,SQL 语法需要正确等等。

    此命令:SELECT Username FROM LoginInfo WHERE Username=Hello1 表示:

    “给我来自 LoginInfo 表的用户名列,其中用户名与 Hello1 列匹配”

    另一方面,这个命令:SELECT Username FROM LoginInfo WHERE Username='Hello1'(注意引号)意味着:

    “给我来自 LoginInfo 表的 Username 列,其中 Username = Hello1”

    您的第二次尝试只是无效的 Python。您应该在外部使用三引号或转义查询中的引号。

    【讨论】:

    • 我试过这样做,你是这个意思吗?我在逐字扫描字符串时收到错误 EOL。 c.execute("""SELECT Username FROM LoginInfo WHERE Username = "Hello1"""")
    • 怀疑你需要在Hello1.=周围使用单引号:c.execute("""SELECT Username FROM LoginInfo WHERE Username = 'Hello1'""")
    猜你喜欢
    • 2021-12-09
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 2019-02-21
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多