Re: [sqlalchemy] Problem with binary field
Hi Mike, Thank you for your help. with mysqlclient everything works OK. just in case below is error i had with mysqlclient connector. Traceback (most recent call last): File "/var/app/admin.feeds.az/scripts/test.py", line 18, in t = session.query(Test.hash).filter(Test.id == 380059).all() File "/var/venv/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2925, in all return list(self) File "/var/venv/lib/python3.6/site-packages/sqlalchemy/orm/loading.py", line 105, in instances util.raise_from_cause(err) File "/var/venv/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 296, in raise_from_cause reraise(type(exception), exception, tb=exc_tb, cause=cause) File "/var/venv/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 277, in reraise raise value File "/var/venv/lib/python3.6/site-packages/sqlalchemy/orm/loading.py", line 89, in instances for row in fetch File "/var/venv/lib/python3.6/site-packages/sqlalchemy/orm/loading.py", line 89, in for row in fetch File "/var/venv/lib/python3.6/site-packages/sqlalchemy/orm/loading.py", line 88, in keyed_tuple([proc(row) for proc in process]) File "/var/venv/lib/python3.6/site-packages/sqlalchemy/sql/sqltypes.py", line 936, in process value = bytes(value) TypeError: string argument without an encoding On Friday, February 1, 2019 at 2:12:55 AM UTC+4, Mike Bayer wrote: > > Please use mysqlclient or pymysql, don't use mysqlclient connector. Also > please define "crash". complete stack trace please ? > > On Thu, Jan 31, 2019, 4:44 PM Teymur Agayev wrote: > >> Hi All, >> >> After upgrade on my VPS the one of the scripts started periodical crash. >> After debugging I found that the problem in the filed that stores hashes. >> for some reason the script started crash on some particular hash values. >> Below is the test script and attached is the database dump. >> >> when ID is 380059 script crashs, other ids, 380058 or 380060 for example, >> work ok. >> >> from sqlalchemy import MetaData, Column, Integer, LargeBinary >> from sqlalchemy.ext.declarative import declarative_base >> from sqlalchemy import create_engine >> from sqlalchemy.orm import sessionmaker >> >> metadata = MetaData() >> Base = declarative_base(metadata=metadata) >> >> class Test(Base): >> __tablename__ = "test" >> id = Column(Integer, primary_key=True) >> hash = Column(LargeBinary(16)) >> >> engine = create_engine('mysql+mysqlconnector://root:q2w3e4r5@localhost/ >> ru.feeds.az') >> Session = sessionmaker(bind=engine) >> session = Session() >> >> t = session.query(Test.hash).filter(Test.id == 380059).all() >> print(t) >> >> >> On this system doesn't work. >> Python 3.6, SQLAlchemy 1.2.17 >> >> On this systems works fine. >> Python 3.5, SQLAlchemy 1.1.14 >> >> Is it a bug or I just doing something wrong. >> >> Thanks, >> Teymur >> >> -- >> SQLAlchemy - >> The Python SQL Toolkit and Object Relational Mapper >> >> http://www.sqlalchemy.org/ >> >> To post example code, please provide an MCVE: Minimal, Complete, and >> Verifiable Example. See http://stackoverflow.com/help/mcve for a full >> description. >> --- >> You received this message because you are subscribed to the Google Groups >> "sqlalchemy" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to sqlalchemy+...@googlegroups.com . >> To post to this group, send email to sqlal...@googlegroups.com >> . >> Visit this group at https://groups.google.com/group/sqlalchemy. >> For more options, visit https://groups.google.com/d/optout. >> > -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.
[sqlalchemy] Problem with binary field
Hi All, After upgrade on my VPS the one of the scripts started periodical crash. After debugging I found that the problem in the filed that stores hashes. for some reason the script started crash on some particular hash values. Below is the test script and attached is the database dump. when ID is 380059 script crash, other ids, 380058 or 380060 for example, work OK. from sqlalchemy import MetaData, Column, Integer, LargeBinary from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker metadata = MetaData() Base = declarative_base(metadata=metadata) class Test(Base): __tablename__ = "test" id = Column(Integer, primary_key=True) hash = Column(LargeBinary(16)) engine = create_engine('') Session = sessionmaker(bind=engine) session = Session() t = session.query(Test.hash).filter(Test.id == 380059).all() print(t) On this system doesn't work. Python 3.6, SQLAlchemy 1.2.17 On this systems works fine. Python 3.5, SQLAlchemy 1.1.14 Is it a bug or I just doing something wrong. Thanks, Teymur -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.
[sqlalchemy] Problem with binary field
Hi All, After upgrade on my VPS the one of the scripts started periodical crash. After debugging I found that the problem in the filed that stores hashes. for some reason the script started crash on some particular hash values. Below is the test script and attached is the database dump. when ID is 380059 script crashs, other ids, 380058 or 380060 for example, work ok. from sqlalchemy import MetaData, Column, Integer, LargeBinary from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker metadata = MetaData() Base = declarative_base(metadata=metadata) class Test(Base): __tablename__ = "test" id = Column(Integer, primary_key=True) hash = Column(LargeBinary(16)) engine = create_engine('mysql+mysqlconnector://root:q2w3e4r5@localhost/ru.feeds.az') Session = sessionmaker(bind=engine) session = Session() t = session.query(Test.hash).filter(Test.id == 380059).all() print(t) On this system doesn't work. Python 3.6, SQLAlchemy 1.2.17 On this systems works fine. Python 3.5, SQLAlchemy 1.1.14 Is it a bug or I just doing something wrong. Thanks, Teymur -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout. -- MySQL dump 10.13 Distrib 5.7.25, for Linux (x86_64) -- -- Host: localhostDatabase: ru.feeds.az -- -- -- Server version 5.7.25-0ubuntu0.18.04.2-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `test` -- DROP TABLE IF EXISTS `test`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `test` ( `id` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT, `hash` binary(16) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `url_hash_UNIQUE` (`hash`) ) ENGINE=InnoDB AUTO_INCREMENT=380241 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `test` -- LOCK TABLES `test` WRITE; /*!4 ALTER TABLE `test` DISABLE KEYS */; INSERT INTO `test` VALUES (380058,0x21B11D9B9D2168E0D35E1BE6AF55A096),(380059,0x6D3BCAA5241A62480DC8AECDA5625863),(380060,0x7E3541D9BDFE8473A0DA0EB5ACAB832E),(380057,0x9F1B213C50F645F4D7BB02CBAB021BBA); /*!4 ALTER TABLE `test` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2019-02-01 0:30:14