![](/img/trans.png)
[英]how to read sqlite3 database table row values using table's variable name
[英]Str-based ValueError when using SQLite3 to import values from a variable to a database table
我正在嘗試創建一個簡單的登錄程序,將記錄的用戶名和密碼從變量保存到 SQLite3 數據庫中。 使用硬編碼字符串運行程序按預期工作,但是當我嘗試使用變量時,會發生基於 str 的 TypeError。 我嘗試使用 str(variable),但這不起作用,我不確定還有什么問題。 任何幫助,將不勝感激。
import sqlite3
from sqlite3 import Error
import sys
def execute_query(connection, query):
cursor = connection.cursor()
try:
cursor.execute(query)
connection.commit()
print("Query executed successfully")
except Error as e:
print(f"The error '{e}' occurred")
def create_new_user(new1, new2):
create_users = ("""INSERT INTO users (username, password)
VALUES (?, ?)
;""", str(new1), str(new2))
execute_query(connection, create_users)
create_users_table = """CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL,
password TEXT NOT NULL
); """
execute_query(connection, create_users_table)
user = input("Would you like to create an account? ")
if "yes" in user:
new1 = input("\nNew username: ")
new2 = input("New password: ")
create_new_user(new1, new2)
else:
sys.exit(0)
Traceback (most recent call last):
File "/Users/scnewmark/Documents/Database/database.py", line 62, in <module>
create_new_user(new1, new2)
File "/Users/scnewmark/Documents/Database/database.py", line 40, in create_new_user
execute_query(connection, create_users)
File "/Users/scnewmark/Documents/Database/database.py", line 18, in execute_query
cursor.execute(query)
ValueError: operation parameter must be str
execute
方法需要一個 SQL 查詢字符串作為第一個參數,一個參數元組作為第二個參數,但是你的:
create_users = ("""INSERT INTO users (username, password)
VALUES (?, ?)
;""", str(new1), str(new2))
並將create_users
作為query
參數傳遞以執行以下操作:
cursor.execute(query)
您將元組作為第一個參數傳遞給execute
方法,從而導致TypeError
。
相反,您可以分別傳遞查詢字符串和參數:
def execute_query(connection, query, credentials):
cursor = connection.cursor()
try:
cursor.execute(query, credentials)
connection.commit()
print("Query executed successfully")
except Error as e:
print(f"The error '{e}' occurred")
def create_new_user(new1, new2):
query = "INSERT INTO users (username, password) VALUES (?, ?);"
credentials = str(new1), str(new2))
execute_query(connection, query, credentials)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.