row
всегда равна длине ROW_HEADS
, это лучше проверять, иначе могут быть ошибки и сбои.ROW_HEADS = ["ID:", "Имя:", "Почта:", "Добавлен:", "Зарплата:"]
def make_string(row):
return '\n'.join([f'{key} {value}' for key, value in zip(ROW_HEADS, row)])
if __name__ == '__main__':
row = (1, 2, 3, 4, 5)
print(make_string(row))
passw
переменная loginDb
- не определена, поэтому функция ищет такую переменную в вышележащей области видимости - в глобальной. А там эта переменная определена и ссылается на класс str
(кстати, зачем???)auth
переменная loginDb
определена, поэтому она там не имеет никакого отношения ни к одноименной переменной в глобальной области, ни к одноименной переменной в функции passw
. execute
попадает значение str
- а это - класс, а не строка, поэтому execute
и ругается, что тип не подходящий. Кто подскажет, где моя ошибка?
import sqlite3
sql = sqlite3.Connection('enter.db')
c = sql.cursor()
print('Подключение к базе данных проведено успешно!')
c.execute("""CREATE TABLE IF NOT EXISTS users (userlogin TEXT, password INTEGER, cash INTEGER)""")
sql.commit()
userlogin = input('Логин: ')
password = input('Пароль: ')
c.execute("SELECT userlogin FROM users where (?)", (userlogin,))
if c.fetchone() is None:
c.execute('INSERT INTO users VALUES (?, ?, ?)', (userlogin, password, 0))
sql.commit()
else:
print('Такой логин уже занят')
c.execute("SELECT * FROM users")
print(c.fetchall())
db.execute("INSERT INTO Пользователи (Номер_телефона) VALUES (?)",
(message.text))
вы пытаетесь добавить строку, но надо делать update уже ранее созданной строки, аналогично с update из предыдущего ветвления. import sqlite3
con = sqlite3.connect(':memory:')
data = [
["item90", 12],
["item3", 0],
["item60", 35],
["item21", 15]
]
con.execute('''create table if not exists inv
(items text, number integer)'''
)
def print_db(con):
for row in con.execute('select * from inv'):
print(row)
def add_data(con, query, data):
con.executemany(query, data)
con.commit()
query = 'INSERT into inv values (?, ?)'
add_data(con, query, data)
print_db(con)
print('\nadd newstroke\n')
data = [['newstroke', 0]]
add_data(con, query, data)
print_db(con)
con.close()
import sqlite3
def test_db(db):
try:
db_cursor = db.cursor()
db_cursor.execute("CREATE TABLE IF NOT EXISTS users (login TEXT, password TEXT)")
db.commit()
return True
except DBError: # тут надо правильную ошибку правильно обрабатывать, я не копался, какую именно и как
return False
def add_user_into_db(db, login, password):
if test_db(db):
добавить_пользователя(login, password)
def select_from_db(db, sel):
if test_db(db):
return список_пользователей(sel)
if __name__ == '__main__':
login = 'my_login'
password = 'my_password'
sel = 'string_for_select'
with sqlite3.connect('users_base.db') as db:
add_user_into_db(db=db, login=login, password=password)
print(select_from_db(db=db, sel=sel))