python - 我正在尝试将帖子添加到帖子表并允许用户能够编辑帖子。而其他用户可以查看帖子并喜欢它
问题描述
我不知道如何将帖子添加到帖子表并允许用户编辑帖子。而其他用户可以查看帖子并喜欢它
import sqlite3, datetime
conn = sqlite3.connect("test.db")
conn.execute('''CREATE TABLE IF NOT EXISTS Users
(username PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL,
time DATETIME NOT NULL,
password INT NOT NULL); ''')
conn.execute('''CREATE TABLE IF NOT EXISTS Posts
(username PRIMARY KEY ,
post TEXT NOT NULL,
time DATETIME NOT NULL); ''')
now = datetime.datetime.now()
current = now.strftime("%d-%m-%Y %H:%M:%S")
print(current)
def signUp():
while True:
username = input("Enter a username: ")
if 0 < len(username) < 16:
check = conn.execute("SELECT name FROM Users WHERE username = ?",(username,)).fetchone()
if check == None:
break
else:
print('username taken')
while True:
name = input("Enter your full name: ")
if 0 < len(name) < 16 and ' ' in name:
break
while True:
email = input("enter your email: ")
if '@' in email:
break
while True:
password = input("Enter your password as long as its less than 8 characters: ")
if len(password) < 8:
break
conn.execute("INSERT INTO Users(username,name,email,time,password) VALUES(?,?,?,?,?)" , (username, name, email, current, password))
conn.commit()
print("your details have been saved\n")
details = conn.execute('SELECT * FROM Users WHERE username = ?', (username,)).fetchall()
print('your info:', details)
return username
def signIn():
while True:
usernameInput = input("Enter your username: ")
check = conn.execute("SELECT name FROM Users WHERE username = ?",(usernameInput,)).fetchone()
if check != None:
break
else:
print('no user found by that name')
while True:
passwordInput = input('enter your password: ')
check = conn.execute("SELECT name FROM Users WHERE password = ? AND username = ?",(passwordInput, usernameInput)).fetchone()
if check != None:
break
else:
print('incorrect password')
details = conn.execute("SELECT * FROM Users WHERE username = ?",(usernameInput,)).fetchone()
print('your info:', details)
return usernameInput
def menuOption():
print("Do you want to:\n1)Sign up\n2)Sign in")
while True:
userResponse = input(">>> ")
if userResponse == '1' or userResponse == '2':
break
else:
print('you must choose 1 or 2')
if(userResponse == "1"):
usr = signUp()
elif(userResponse == "2"):
usr = signIn()
wpost(usr)
def get_all():
print('\nall user info:\n')
allusers = conn.execute('SELECT * FROM Users').fetchall()
for i in allusers:
print(i)
def post(username):
while True:
yourpost = input("This is your post, type whatever you want: ")
if len(yourpost) < 300:
conn.execute("INSERT INTO Posts(username,post,time) VALUES(?,?,?)" , (username, post, current))
conn.commit()
allposts = conn.execute('SELECT * FROM Posts').fetchall()
for x in allposts:
print(x)
break
elif len(yourpost) > 300:
print('your post is longer than 300 characters')
break
def wpost(username):
print("Do you want to: \n(Y)create a post\n(N)not")
while True:
userResponse2 = input(">>> ")
if userResponse2 == "Y" or userResponse2 == 'N':
break
else:
print("you must choose Y OR N")
if(userResponse2 == "Y"):
post(username)
if(userResponse2 == "N"):
get_all()
menuOption()
conn.close()
这是我目前得到的错误:
Traceback (most recent call last):
File "main.py", line 126, in <module>
menuOption()
File "main.py", line 83, in menuOption
wpost(usr)
File "main.py", line 119, in wpost
post(username)
File "main.py", line 95, in post
conn.execute("INSERT INTO Posts(username,post,time) VALUES(?,?,?)" , (username, post, current))
sqlite3.InterfaceError: Error binding parameter 1 - probably unsupported type.
我不知道如何将帖子添加到帖子表并允许用户编辑帖子。而其他用户可以查看帖子并喜欢它。
解决方案
您将post
变量传递给 SQL INSERT 语句,而post
代码中有类型函数。你应该传递yourpost
字符串而不是post
让你的代码工作。
推荐阅读
- angular - 通过角度指令访问模板变量
- c# - Asp.net 表格宽度不超过 100%
- javascript - 可拖动的可编辑字段
- javascript - JavaScript 错误未显示在控制台中
- azure - 如何在 ARM 模板的单个 NSG SecurityRule 中使用多个目标端口
- php - 无法在 laravel 5.4 中使用 sqlsrv(找不到驱动程序)迁移数据库
- snakemake - Snakemake:导出 d3dag - MissingInputException
- wordpress - 添加产品时,Woocommerce 产品类别丢失(不显示)
- javascript - 在 Laravel 中验证前后使用 javascript 添加表单元素
- javascript - 世博会缺少相机胶卷权限