
?? Eugene
04.09.2018
06:20:58
А, есть же байт строки
b"hello"


Iliya
04.09.2018
06:25:27
Все доброе утро, вчера был вопрос, хотел запрос в базу обернуть в функцию, в общем разобрался и вот что получилось
Все работает нормально
def check_copmlite_insert_table(CONFIG_ID, ATT_ID):
cursor.execute('SELECT * FROM table WHERE CONFIG_ID=:1 AND ATT_ID=:2', (CONFIG_ID, ATT_ID))
res = cursor.fetchall()
if res:
print("done")
else:
print("not found")
Вызываю вункцию так
check_copmlite_insert_table(12345, 3)
А сегодня решил еще и insert обернуть в аналагичную функцию, а может потом и собрать их в одну
вот собственно запрос
cursor.execute("INSERT into table (VALUE, CONFIG_ID, ATT_ID, ATT_NAME) values ('somth', 12345, 3, 'somth')")
Вот как я пытаюсь обернуть в функцию
def insert_into_table(VALUE, CONFIG_ID, ATT_ID, ATT_NAME):
cursor.execute('INSERT into table (VALUE, CONFIG_ID, ATT_ID, ATT_NAME)\
values (VALUE=:1, CONFIG_ID=:2, ATT_ID=:3, ATT_NAME=:4)', (VALUE, CONFIG_ID, ATT_ID, ATT_NAME))
Но почемуто так не получается, хотя делаю все по аналогии, возможно тут дело в том, что в запросе данные передаются через values
вот так пытаюсь Вызывать функцию
insert_into_table('somth', 12345, 3, 'somth')
Подскажите пожалуйста, что я делаю не так и как это можно поправить,
.format
не предлагать, нельзя в sql запросах :)

Google

Denis
04.09.2018
06:25:53

Iliya
04.09.2018
06:27:32
@cykooz может что подскажите по моему вопросу

Aragaer
04.09.2018
06:27:45
не надо называть переменную list
к хорошему не приведет

Ravik
04.09.2018
06:28:19
как через requests.post правильно отправлять данные такого типа:
[('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68), ('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68)]
?
Пытаюсь requests.post("http://site.ru/guest.php", data={[('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68), ('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68)]})
Выдает ошибку:TypeError: unhashable type: 'list'

Artyom
04.09.2018
06:28:43
всем привет, может кто поможет разобраться в проблеме.
необходимо собирать метрику с django rest
а именно количество запросов на определённые url
может есть у кого какие мысли или примерная реализация?


Cykooz
04.09.2018
06:31:55
Все доброе утро, вчера был вопрос, хотел запрос в базу обернуть в функцию, в общем разобрался и вот что получилось
Все работает нормально
def check_copmlite_insert_table(CONFIG_ID, ATT_ID):
cursor.execute('SELECT * FROM table WHERE CONFIG_ID=:1 AND ATT_ID=:2', (CONFIG_ID, ATT_ID))
res = cursor.fetchall()
if res:
print("done")
else:
print("not found")
Вызываю вункцию так
check_copmlite_insert_table(12345, 3)
А сегодня решил еще и insert обернуть в аналагичную функцию, а может потом и собрать их в одну
вот собственно запрос
cursor.execute("INSERT into table (VALUE, CONFIG_ID, ATT_ID, ATT_NAME) values ('somth', 12345, 3, 'somth')")
Вот как я пытаюсь обернуть в функцию
def insert_into_table(VALUE, CONFIG_ID, ATT_ID, ATT_NAME):
cursor.execute('INSERT into table (VALUE, CONFIG_ID, ATT_ID, ATT_NAME)\
values (VALUE=:1, CONFIG_ID=:2, ATT_ID=:3, ATT_NAME=:4)', (VALUE, CONFIG_ID, ATT_ID, ATT_NAME))
Но почемуто так не получается, хотя делаю все по аналогии, возможно тут дело в том, что в запросе данные передаются через values
вот так пытаюсь Вызывать функцию
insert_into_table('somth', 12345, 3, 'somth')
Подскажите пожалуйста, что я делаю не так и как это можно поправить,
.format
не предлагать, нельзя в sql запросах :)
Попробуй значения в SQL запросе передавать без указания их имён - ты их уже до этого указал в скобках после table, а после values, насклько я знаю (в Оракл не силён), в скобках просто перечисляется список значений через запятую, без вот этот VALUE=:1
Ну и читай ошибку (у тебя ведь ошиба случилась?). Наверняка в ней что то да указано
Ну и старайся следовать PEP8, что бы других не "укачивало" от твоего питон-кода. Имена аргументов функций и переменные задаются символами нижнего регистра.


Mr
04.09.2018
06:34:18
чот киберпанк2077 геймплей показали как-то не ошень
надо было им ведьмак4 пилить

Cykooz
04.09.2018
06:35:38
как через requests.post правильно отправлять данные такого типа:
[('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68), ('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68)]
?
Пытаюсь requests.post("http://site.ru/guest.php", data={[('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68), ('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68)]})
Выдает ошибку:TypeError: unhashable type: 'list'
{[('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68), ('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68)]}
А сам можеш это "распарсить" и понять что это такое ты написал и какого оно типа?


Iliya
04.09.2018
06:35:58
Попробуй значения в SQL запросе передавать без указания их имён - ты их уже до этого указал в скобках после table, а после values, насклько я знаю (в Оракл не силён), в скобках просто перечисляется список значений через запятую, без вот этот VALUE=:1
пробовал сразу, не работает, тут уже получаются строковые замумы, про регистр переменных знаю =), это я просто копипастой из запросов поставлял, а INSERT капсом так как только при капсе в запросе начинается подсветка синтаксиса, а если все маленькими как будто строка
Юзаю subl3

Google

Cykooz
04.09.2018
06:36:25

Denis
04.09.2018
06:36:26
подскажите, а есть нормальная библиотека для вк?
нужно парсить имена,фотки и друзей пользователя

Ravik
04.09.2018
06:37:13

/dev
04.09.2018
06:37:19

Denis
04.09.2018
06:37:37

Cykooz
04.09.2018
06:37:48

Denis
04.09.2018
06:38:22
помогите(

Cykooz
04.09.2018
06:38:39

?? Eugene
04.09.2018
06:38:43
Разбирать другие люди будут)

/dev
04.09.2018
06:39:41

Iliya
04.09.2018
06:39:44
Тогда текст ошибки "в студию".
При таком раскладе
вот собственно запрос
cursor.execute("INSERT into table (VALUE, CONFIG_ID, ATT_ID, ATT_NAME) values ('somth', 12345, 3, 'somth')")
Вот как я пытаюсь обернуть в функцию
def insert_into_table(VALUE, CONFIG_ID, ATT_ID, ATT_NAME):
cursor.execute('INSERT into table (VALUE, CONFIG_ID, ATT_ID, ATT_NAME)\
values (VALUE=:1, CONFIG_ID=:2, ATT_ID=:3, ATT_NAME=:4)', (VALUE, CONFIG_ID, ATT_ID, ATT_NAME))
insert_into_table('somth', 12345, 3, 'somth')
ERROR
Traceback (most recent call last):
File orcl_db_test.py, line 54, in <module>
insert_into_table('somth', 12345, 3, 'somth')
File orcl_db_test.py, line 52, in insert_into_table
values (VALUE=:1, CONFIG_ID=:2, ATT_ID=:3, ATT_NAME=:4)', (VALUE, CONFIG_ID, ATT_ID, ATT_NAME))
cx_Oracle.DatabaseError: ORA-00917: missing comma
[Finished in 2.7s with exit code 1]


8
04.09.2018
06:40:45
Всем привет. Вопрос такой: есть папка с файлами. Необходимо создать файл со списком названий файлов. Как это реализовать?


Cykooz
04.09.2018
06:40:47
При таком раскладе
вот собственно запрос
cursor.execute("INSERT into table (VALUE, CONFIG_ID, ATT_ID, ATT_NAME) values ('somth', 12345, 3, 'somth')")
Вот как я пытаюсь обернуть в функцию
def insert_into_table(VALUE, CONFIG_ID, ATT_ID, ATT_NAME):
cursor.execute('INSERT into table (VALUE, CONFIG_ID, ATT_ID, ATT_NAME)\
values (VALUE=:1, CONFIG_ID=:2, ATT_ID=:3, ATT_NAME=:4)', (VALUE, CONFIG_ID, ATT_ID, ATT_NAME))
insert_into_table('somth', 12345, 3, 'somth')
ERROR
Traceback (most recent call last):
File orcl_db_test.py, line 54, in <module>
insert_into_table('somth', 12345, 3, 'somth')
File orcl_db_test.py, line 52, in insert_into_table
values (VALUE=:1, CONFIG_ID=:2, ATT_ID=:3, ATT_NAME=:4)', (VALUE, CONFIG_ID, ATT_ID, ATT_NAME))
cx_Oracle.DatabaseError: ORA-00917: missing comma
[Finished in 2.7s with exit code 1]
Ну вот тебе и ответ - missing comma.

?? Eugene
04.09.2018
06:40:50
Запятую пропустил

8
04.09.2018
06:41:03
Гугл чёт не помог

?? Eugene
04.09.2018
06:41:08
Скорее всего там, где бэкслеш

Ravik
04.09.2018
06:41:12
Ладно подскажу - ты пытаешся создать set используя в качестве его элемента list - на это питон и ругается
Это - [('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68), ('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68)]
просто данные, и их нужно отправить... я думал, что отправляется как requests.post("куда отправлять", data={что отправлять})
А оказывается все сложнее, и data={тут должны быть данные определенного типа?}

?? Eugene
04.09.2018
06:41:57
Это - [('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68), ('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68)]
просто данные, и их нужно отправить... я думал, что отправляется как requests.post("куда отправлять", data={что отправлять})
А оказывается все сложнее, и data={тут должны быть данные определенного типа?}
В json положи

Iliya
04.09.2018
06:42:04

Cykooz
04.09.2018
06:42:05
Это - [('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68), ('c8:38:70:df:a3:e2', 'SamsungE', '2018-09-03 17:06:12', -68)]
просто данные, и их нужно отправить... я думал, что отправляется как requests.post("куда отправлять", data={что отправлять})
А оказывается все сложнее, и data={тут должны быть данные определенного типа?}
Пожалуй тебе надо поизучать ещё основы питона и особено про его типы данных

Google

Iliya
04.09.2018
06:42:30

Ravik
04.09.2018
06:42:48

?? Eugene
04.09.2018
06:43:04

Cykooz
04.09.2018
06:43:27
В любом случае такой синтаксис SQL явно избыточен

Iliya
04.09.2018
06:44:12

Mr
04.09.2018
06:44:22

Cykooz
04.09.2018
06:44:35
Нет -_-
Ну почему нет, вроде в request есть такой аргумент

?? Eugene
04.09.2018
06:45:08

Cykooz
04.09.2018
06:45:37
Ну вроде сериализуется, если он не будет фигурные скобки пихать куда попало не думая

8
04.09.2018
06:46:23
Или в питон тоже есть?

Mr
04.09.2018
06:46:41
ох...

8
04.09.2018
06:46:48
Был бы линукс, было б легче

Iliya
04.09.2018
06:47:20
в общем на стеке с такой ошибкой ракловой у человека не хватало закрывающей скобки в конце ) у меня со скобками все норм, буду пробавать
убрать штуки вида VALUE=, и посмотри - может другая ошибка будет

?? Eugene
04.09.2018
06:47:23

Cykooz
04.09.2018
06:47:46

Ravik
04.09.2018
06:48:02

Cykooz
04.09.2018
06:48:49


Iliya
04.09.2018
06:51:42
Попробуй убрать штуки вида VALUE=, и посмотри - может другая ошибка будет
def insert_into_table(VALUE, CONFIG_ID, ATT_ID, ATT_NAME):
cursor.execute('INSERT into table (VALUE, CONFIG_ID, ATT_ID, ATT_NAME)\
values (VALUE, CONFIG_ID, ATT_ID, ATT_NAME)')
insert_into_table('somth', 12345, 3, 'somth')
и тогда вообще бред, так как это просто строка, и как мне туда подставить значения принимаемые функцией
Error
Traceback (most recent call last):
File "orcl_db_test.py", line 54, in <module>
insert_into_table('somth', 12345, 3, 'somth')
File "orcl_db_test.py", line 52, in insert_into_table
values (VALUE, CONFIG_ID, ATT_ID, ATT_NAME)')
cx_Oracle.DatabaseError: ORA-00984: column not allowed here
[Finished in 1.1s with exit code 1]

Google

Cykooz
04.09.2018
06:52:55
def insert_into_table(VALUE, CONFIG_ID, ATT_ID, ATT_NAME):
cursor.execute('INSERT into table (VALUE, CONFIG_ID, ATT_ID, ATT_NAME)\
values (VALUE, CONFIG_ID, ATT_ID, ATT_NAME)')
insert_into_table('somth', 12345, 3, 'somth')
и тогда вообще бред, так как это просто строка, и как мне туда подставить значения принимаемые функцией
Error
Traceback (most recent call last):
File "orcl_db_test.py", line 54, in <module>
insert_into_table('somth', 12345, 3, 'somth')
File "orcl_db_test.py", line 52, in insert_into_table
values (VALUE, CONFIG_ID, ATT_ID, ATT_NAME)')
cx_Oracle.DatabaseError: ORA-00984: column not allowed here
[Finished in 1.1s with exit code 1]
Ну мля. Погляди на свой код внимательно и пойми что ты наделал ?
Вот кусок запроса, который у тебя улетает в оракл
values (VALUE, CONFIG_ID, ATT_ID, ATT_NAME)

Iliya
04.09.2018
06:54:39
Ну да, так ты же сказал убрать :=1 ;)
Вот я и убрал :)
И я понимаю, что я просто бредовые значения шлю
Или я тебя не понял и не то поменял

Cykooz
04.09.2018
06:56:40
Я сказал убрать штуки вида VALUE=, а не цифры с двоеточиями
Он у тебя на запятую ругается, потому что у тебя синтаксис SQL запроса не верный, нельзя так писать запрос
в скобках надо список значений передавать, а не выполнять присвоение (или сравнение?)

Iliya
04.09.2018
07:07:51
Я сказал убрать штуки вида VALUE=, а не цифры с двоеточиями
Вот такой запрос отрабатывает нормально
cursor.execute('SELECT * FROM table WHERE CONFIG_ID=:1 AND ATT_ID=:2', (CONFIG_ID, ATT_ID))
И это я по примеру из доки взял, и по логике :=1 2 и тд это потом подставляются переменные из скобок после запятой

Cykooz
04.09.2018
07:10:28
По моему у тебя лексиграфия. ? В запросе ты пишешь =:1, а чуть позднее :=1
А ещё плохое знание основ SQL - знак равно после имени колонки в условии (WHERE) это элемент SQL запроса, а не маркер того куда надо подставлять значение переменной. И означает он "значение клонки должно равняться..."

Iliya
04.09.2018
07:13:06

Cykooz
04.09.2018
07:13:29
Плейсхолдером у тебя являются строчки вида :1, :2 и т.д - всё остальное оставётся в запросе так как ты написал.

Iliya
04.09.2018
07:15:02

Cykooz
04.09.2018
07:18:02
Ладно надоело сопли тебе вытирать. Вот тебе твоя функция:
```
def insert_into_table(VALUE, CONFIG_ID, ATT_ID, ATT_NAME):
cursor.execute(
'''INSERT into table (VALUE, CONFIG_ID, ATT_ID, ATT_NAME)
VALUES (:1, :2, :3, :4)''',
(VALUE, CONFIG_ID, ATT_ID, ATT_NAME)
)
```

Iliya
04.09.2018
07:18:15
В общем вот так у меня в запросе который работает нормально и вот так написано в доке
r1 = cursor.execute('SELECT * FROM locations WHERE country_id=:1 AND city=:2', ('US', 'Seattle'))

Cykooz
04.09.2018
07:18:20
Учи SQL (ну и питон тоже)

Iliya
04.09.2018
07:19:19
Ладно надоело сопли тебе вытирать. Вот тебе твоя функция:
```
def insert_into_table(VALUE, CONFIG_ID, ATT_ID, ATT_NAME):
cursor.execute(
'''INSERT into table (VALUE, CONFIG_ID, ATT_ID, ATT_NAME)
VALUES (:1, :2, :3, :4)''',
(VALUE, CONFIG_ID, ATT_ID, ATT_NAME)
)
```
как будто я так не пробовал :)
еще до написания вопроса в чат, я перепробовал много вариантов :)

Google

Iliya
04.09.2018
07:22:07
Ладно надоело сопли тебе вытирать. Вот тебе твоя функция:
```
def insert_into_table(VALUE, CONFIG_ID, ATT_ID, ATT_NAME):
cursor.execute(
'''INSERT into table (VALUE, CONFIG_ID, ATT_ID, ATT_NAME)
VALUES (:1, :2, :3, :4)''',
(VALUE, CONFIG_ID, ATT_ID, ATT_NAME)
)
```
Ну в общем тоже на работает :)

Cykooz
04.09.2018
07:22:30
В селекте у тебя условие, в котором надо писать операторы сравнения - это вот такие значёчки =, >, <, >=, <= ?
И все эти значёчки не имеют ни какого отношения к тому как подставить в строку с SQL запросом свою переменную. Переменные подставляются через плейсхолдеры - это строки вида :1, :2 и др. Хотя это херня какая то и не по стандарту питонячего DB API, в котором надо использовать %s

Iliya
04.09.2018
07:23:30
Какая ошибка?
Traceback (most recent call last):
File "orcl_db_test.py", line 61, in <module>
insert_into_table('somth', 12345, 3, 'somth')
File "orcl_db_test.py", line 59, in insert_into_table
cursor.execute('INSERT into table (VALUE, CONFIG_ID, ATT_ID, ATT_NAME) VALUES (:1, :2, :3, :4)', (VALUE, CONFIG_ID, ATT_ID, ATT_NAME))
cx_Oracle.IntegrityError: ORA-00001: unique constraint (SDP.UK_VA_CONFIG_ID_ATT_ID) violated
[Finished in 0.6s with exit code 1]


Cykooz
04.09.2018
07:25:27
Ну и? Читать научить? Или показать где гугл-транслейт лежит? ?

Iliya
04.09.2018
07:25:55

Cykooz
04.09.2018
07:26:10
Теперь всё нормально у тебя с питон кодом. Теперь у тебя нарушение уникального ключа в таблице

Iliya
04.09.2018
07:29:24
Ну я из оракловой доки взял, %s был в примере для другой либы, но я решил юзать офф так как база у меня оракловая

Евгений
04.09.2018
07:39:25

Yevgeniy
04.09.2018
07:49:21
@EugeneSobolev потом могу его передавать в post("url", x_real_ip ) ?

?? Eugene
04.09.2018
07:52:11
Обычно на прокси-сервере устанавливается заголовок x_real-ip и запрос передается дальше, на апликейшн сервер.

Yevgeniy
04.09.2018
07:54:55
ок сейчас попробую


Сергей
04.09.2018
07:56:16
Добрый день. Нужен питонщик для удаленной работы на постоянной основе, по 4-6 часов в день для разработки кроссплатформенных проектов-ботов (серверные приложения). Для каждого проекта пишется подробное ТЗ с прототипами, проговариваются все тонкие моменты. На данный момент есть текущий начатый проект, есть ТЗ для него, нужно дописать функционал. Разработка ведется в git. Причина поиска нового разработчика: личные обстоятельства текущего, по которым уделяется мало времени проекту.
Работа делится на несколько этапов, оплата по факту сдачи этапа, может быть хоть каждый день. Оплата желательно на карту сбербанка или другие ЭПС в РФ, т.к. переводы за пределы требуют большего времени и дополнительных комиссий.
Нам нужен разработчик, который будет в будни по Мск на связи, оперативно исправлять баги, соблюдать (хотя бы не сильно затягивать) сроки. Проектов много, все они каким-то образом связаны с криптобиржами. Поэтому большой плюс тому кандидату, у которого есть опыт или интерес к подобным ботам.
Ставка за час работы 700-800 рублей. Если сработаемся, то возможно повышение ставки до 1000 рублей и выше, в зависимости от вашего уровня. Либо можем оплачивать не по часам, а по объему работ за каждый этап - как вам удобнее. От нас всегда опреативная обратная связь, помощь, ответы на вопросы, своевременная оплата. Нам нужен ответственный человек в команду.
Требуются знания: python, docker, redis, js. Текущая задача, доработать текущий проект. Еще 2 проекта на стадии написания ТЗ. Если ваши знания есть в yii2, то возможно подключение к большому международному проекту, тоже в сфере криптовалют.
#работа


Yegor
04.09.2018
08:41:35
Товарищи, подскажите пожалуйста, есть ли какие-либо модули, которые могут .cdw файл открыть. Это тот который в компасе рисуется

Ruslan
04.09.2018
08:43:32
загугли, так быстрее